termios --- کنترل tty به سبک POSIX¶
این ماژول رابطی برای فراخوانیهای POSIX جهت کنترل ورودی/خروجی tty فراهم میکند. برای توضیح کامل این فراخوانیها، صفحهی راهنمای یونیکس termios(3) را ببینید. این ماژول تنها برای نسخههایی از یونیکس در دسترس است که از کنترل ورودی/خروجی tty بهسبک termios POSIX پشتیبانی میکنند و در هنگام نصب پیکربندی شدهاند.
دسترسپذیری: Unix.
تمام توابع این ماژول یک توصیفگر فایل با نام fd را بهعنوان نخستین آرگومان خود دریافت میکنند. این میتواند یک توصیفگر فایل از نوع عدد صحیح باشد، مانند آنچه sys.stdin.fileno() بازمیگرداند، یا یک file object، مانند خود sys.stdin.
این ماژول همچنین تمام ثابتهای مورد نیاز برای کار با توابع ارائهشده در اینجا را تعریف میکند؛ این ثابتها همان نام همتاهایشان در C را دارند. لطفاً برای اطلاعات بیشتر درباره استفاده از این رابطهای کنترل پایانه، به مستندات سیستم خود مراجعه کنید.
این ماژول توابع زیر را تعریف میکند:
- termios.tcgetattr(fd)¶
فهرستی حاوی ویژگیهای tty برای توصیفگر فایل fd برمیگرداند، به این صورت:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]که در آن cc فهرستی از نویسههای ویژه tty است (هرکدام رشتهای به طول ۱، بهجز آیتمهای دارای اندیسهایVMINوVTIME، که وقتی این فیلدها تعریف شده باشند، عدد صحیح هستند). تفسیر پرچمها و سرعتها و همچنین اندیسدهی در آرایهی cc باید با استفاده از ثابتهای نمادین تعریفشده در ماژولtermiosانجام شود.
- termios.tcsetattr(fd, when, attributes)¶
ویژگیهای tty را برای توصیفگر فایل fd با استفاده از attributes تنظیم کنید، که فهرستی مانند فهرست بازگرداندهشده توسط
tcgetattr()است. آرگومان when تعیین میکند که ویژگیها چه زمانی تغییر کنند:- termios.TCSANOW¶
ویژگیها را بلافاصله تغییر دهید.
- termios.TCSADRAIN¶
تغییر ویژگیها پس از ارسال تمام خروجی صفشده.
- termios.TCSAFLUSH¶
ویژگیها را پس از ارسال تمام خروجیهای در صف و دور ریختن تمام ورودیهای در صف تغییر دهید.
- termios.tcsendbreak(fd, duration)¶
یک break را روی توصیفگر فایل fd ارسال کنید. یک duration صفر، یک break را برای ۰٫۲۵ تا ۰٫۵ ثانیه ارسال میکند؛ یک duration غیرصفر معنایی وابسته به سیستم دارد.
- termios.tcdrain(fd)¶
صبر کنید تا تمام خروجی نوشتهشده در توصیفگر فایل fd ارسال شود.
- termios.tcflush(fd, queue)¶
دادههای در صف روی توصیفگر فایل fd را دور بریزید. انتخابگر queue مشخص میکند کدام صف:
TCIFLUSHبرای صف ورودی،TCOFLUSHبرای صف خروجی، یاTCIOFLUSHبرای هر دو صف.
- termios.tcflow(fd, action)¶
تعلیق یا ازسرگیری ورودی یا خروجی روی توصیفگر فایل fd. آرگومان action میتواند برای تعلیق خروجی
TCOOFF، برای ازسرگیری خروجیTCOON، برای تعلیق ورودیTCIOFF، یا برای ازسرگیری ورودیTCIONباشد.
- termios.tcgetwinsize(fd)¶
یک تاپل
(ws_row, ws_col)بازمیگرداند که حاوی اندازهی پنجرهی tty برای توصیفگر فایل fd است. نیازمندtermios.TIOCGWINSZیاtermios.TIOCGSIZEاست.اضافه شده در نسخهی 3.11.
- termios.tcsetwinsize(fd, winsize)¶
اندازهی پنجرهی tty برای توصیفگر فایل fd را از winsize تنظیم میکند، که یک تاپل دو آیتمی
(ws_row, ws_col)مانند آنچه توسطtcgetwinsize()برگردانده میشود، است. نیاز است حداقل یکی از جفتهای (termios.TIOCGWINSZ،termios.TIOCSWINSZ)؛ (termios.TIOCGSIZE،termios.TIOCSSIZE) تعریف شده باشد.اضافه شده در نسخهی 3.11.
همچنین ملاحظه نمائید
- ماژول
tty توابع تسهیلکننده برای عملیات رایج کنترل پایانه.
مثال¶
در اینجا تابعی آمده است که گذرواژه را با بازتاب غیرفعال درخواست میکند. به روش استفاده از یک فراخوانی جداگانه tcgetattr() و یک دستور try ... finally توجه کنید تا اطمینان حاصل شود که ویژگیهای قدیمی tty، صرفنظر از هر اتفاقی که بیفتد، دقیقاً بازیابی میشوند:
def getpass(prompt="Password: "):
import termios, sys
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO # lflags
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
passwd = input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd