msvcrt --- روال‌های مفید از ران‌تایم MS VC++


این توابع دسترسی به برخی قابلیت‌های مفید در سکوهای ویندوزی را فراهم می‌کنند. برخی ماژول‌های سطح بالاتر از این توابع برای ساخت پیاده‌سازی‌های ویندوزی خدمات خود استفاده می‌کنند. برای مثال، ماژول getpass در پیاده‌سازی تابع getpass() از آن استفاده می‌کند.

مستندات بیشتر در مورد این توابع را می‌توانید در مستندات API پلتفرم بیابید.

این ماژول هر دو گونه‌ی معمولی و نویسه‌ی پهن (wide char) از API ورودی/خروجی کنسول را پیاده‌سازی می‌کند. API معمولی تنها با نویسه‌های ASCII سروکار دارد و کاربرد محدودی برای برنامه‌های بین‌المللی‌سازی‌شده دارد. باید تا جایی که ممکن است از API نویسه‌ی پهن استفاده شود.

تغییر یافته در نسخه‌ی 3.3: عملیات‌های این ماژول اکنون در مواردی که IOError پرتاب می‌شد، OSError پرتاب می‌کنند.

عملیات پرونده

msvcrt.locking(fd, mode, nbytes)

بخشی از یک پرونده را بر اساس توصیف‌گر پرونده fd از ران‌تایم C قفل می‌کند. در صورت شکست، OSError را پرتاب می‌کند. ناحیه‌ی قفل‌شده‌ی پرونده از موقعیت فعلی پرونده شروع شده و به اندازه‌ی nbytes بایت ادامه می‌یابد و ممکن است از پایان پرونده فراتر رود. mode باید یکی از ثابت‌های LK_* فهرست‌شده در زیر باشد. ممکن است چندین ناحیه در یک پرونده به‌طور همزمان قفل شوند، اما نباید هم‌پوشانی داشته باشند. ناحیه‌های مجاور با هم ادغام نمی‌شوند؛ باید به‌صورت جداگانه از قفل خارج شوند.

یک رویداد حسابرسی msvcrt.locking را با آرگومان‌های fd، mode و nbytes پرتاب می‌کند.

msvcrt.LK_LOCK
msvcrt.LK_RLCK

بایت‌های مشخص‌شده را قفل می‌کند. اگر بایت‌ها قفل نشوند، برنامه بلافاصله پس از ۱ ثانیه دوباره تلاش می‌کند. اگر پس از ۱۰ تلاش، بایت‌ها قفل نشوند، OSError پرتاب می‌شود.

msvcrt.LK_NBLCK
msvcrt.LK_NBRLCK

بایت‌های مشخص‌شده را قفل می‌کند. اگر امکان قفل کردن بایت‌ها وجود نداشته باشد، OSError پرتاب می‌شود.

msvcrt.LK_UNLCK

قفل بایت‌های مشخص‌شده را باز می‌کند، که باید پیش‌تر قفل شده باشند.

msvcrt.setmode(fd, flags)

حالت ترجمه پایان خط را برای توصیف‌گر پرونده fd تنظیم کنید. برای تنظیم آن به حالت متنی، flags باید os.O_TEXT باشد؛ برای حالت دودویی، باید os.O_BINARY باشد.

msvcrt.open_osfhandle(handle, flags)

یک توصیف‌گر پرونده ران‌تایم C از دسته‌ی پرونده handle ایجاد می‌کند. پارامتر flags باید OR بیتی از os.O_APPEND، os.O_RDONLY، os.O_TEXT و os.O_NOINHERIT باشد. شما می‌توانید از توصیف‌گر پرونده برگردانده‌شده به‌عنوان پارامتری برای os.fdopen() استفاده کنید تا یک شیء پرونده ایجاد شود.

توصیف‌گر پرونده به‌طور پیش‌فرض قابل ارث‌بردن است. برای غیرقابل ارث‌بردن کردن آن، پرچم os.O_NOINHERIT را ارسال کنید.

یک رویداد حسابرسی msvcrt.open_osfhandle را با آرگومان‌های handle و flags پرتاب می‌کند.

msvcrt.get_osfhandle(fd)

دسته پرونده را برای توصیف‌گر پرونده fd بازمی‌گرداند. اگر fd شناسایی نشود، OSError پرتاب می‌شود.

یک رویداد حسابرسی msvcrt.get_osfhandle را با آرگومان fd پرتاب می‌کند.

ورودی/خروجی کنسول

msvcrt.kbhit()

اگر فشار کلید در انتظار خوانده شدن باشد، یک مقدار غیرصفر برمی‌گرداند. در غیر این صورت، ۰ برمی‌گرداند.

msvcrt.getch()

یک فشردن کلید را می‌خواند و نویسه حاصل را به‌صورت یک رشته بایتی برمی‌گرداند. هیچ چیزی در کنسول بازتاب داده نمی‌شود. اگر فشردن کلید از قبل در دسترس نباشد، این فراخوانی مسدود می‌شود، اما برای فشرده شدن Enter منتظر نمی‌ماند. اگر کلید فشرده‌شده یک کلید تابعی ویژه باشد، این تابع '\000' یا '\xe0' را برمی‌گرداند؛ فراخوانی بعدی کد کلید را برمی‌گرداند. فشردن کلید Control-C را نمی‌توان با این تابع خواند.

msvcrt.getwch()

نسخه‌ی نویسه‌ی پهن از getch()، که یک مقدار Unicode را برمی‌گرداند.

msvcrt.getche()

مشابه getch()، اما اگر فشردن کلید نشان‌دهنده یک نویسه قابل چاپ باشد، بازتاب داده می‌شود.

msvcrt.getwche()

نسخه‌ی نویسه‌ی پهن از getche()، که یک مقدار یونیکد را برمی‌گرداند.

msvcrt.putch(char)

رشته بایتی char را بدون بافرینگ در کنسول چاپ کنید.

msvcrt.putwch(unicode_char)

نسخه‌ی نویسه‌ی پهن از putch() که یک مقدار یونیکد را می‌پذیرد.

msvcrt.ungetch(char)

باعث می‌شود رشته بایتی char به درون بافر کنسول «بازگردانده شود»؛ این، نویسه‌ی بعدی خواهد بود که توسط getch() یا getche() خوانده می‌شود.

msvcrt.ungetwch(unicode_char)

نسخه‌ی نویسه‌ی پهن از ungetch()، که یک مقدار یونیکد را می‌پذیرد.

سایر توابع

msvcrt.heapmin()

هیپمربوط به malloc() را مجبور می‌کند تا خود را پاک‌سازی کند و بلوک‌های استفاده‌نشده را به سیستم‌عامل بازگرداند. در صورت شکست، OSError پرتاب می‌شود.

msvcrt.set_error_mode(mode)

مکانی را که ران‌تایم C پیام خطایی را برای خطایی که ممکن است برنامه را خاتمه دهد در آن می‌نویسد، تغییر می‌دهد. mode باید یکی از ثابت‌های OUT_* فهرست‌شده در زیر یا REPORT_ERRMODE باشد. تنظیم پیشین را برمی‌گرداند یا در صورت بروز خطا -1 را برمی‌گرداند. فقط در ساخت اشکال‌زدایی پایتون در دسترس است.

msvcrt.OUT_TO_DEFAULT

چاهک خطا (error sink) بر اساس نوع برنامه تعیین می‌شود. فقط در ساخت اشکال‌زدایی پایتون در دسترس است.

msvcrt.OUT_TO_STDERR

مقصد خطا، جریان خطای استاندارد است. فقط در ساخت اشکال‌زدایی پایتون در دسترس است.

msvcrt.OUT_TO_MSGBOX

مقصد خطا (Error sink) یک جعبه پیام است. تنها در ساخت اشکال‌زدایی پایتون در دسترس است.

msvcrt.REPORT_ERRMODE

مقدار حالت خطای فعلی را گزارش می‌دهد. فقط در ساخت اشکال‌زدایی پایتون در دسترس است.

msvcrt.CrtSetReportMode(type, mode)

مقصد یا مقصدهای یک نوع گزارش خاص را که توسط _CrtDbgReport() در ران‌تایم MS VC++ تولید می‌شود، مشخص می‌کند. type باید یکی از ثابت‌های CRT_* فهرست‌شده در زیر باشد. mode باید یکی از ثابت‌های CRTDBG_* فهرست‌شده در زیر باشد. فقط در ساخت اشکال‌زدایی پایتون در دسترس است.

msvcrt.CrtSetReportFile(type, file)

پس از اینکه از CrtSetReportMode() برای مشخص کردن CRTDBG_MODE_FILE استفاده کردید، می‌توانید دسته پرونده‌ای را که متن پیام را دریافت می‌کند، مشخص کنید. type باید یکی از ثابت‌های CRT_* فهرست‌شده در زیر باشد. file باید دسته پرونده‌ای باشد که می‌خواهید مشخص شود. فقط در ساخت اشکال‌زدایی پایتون در دسترس است.

msvcrt.CRT_WARN

هشدارها، پیام‌ها و اطلاعاتی که نیاز به توجه فوری ندارند.

msvcrt.CRT_ERROR

خطاها، مشکلات غیرقابل‌بازیابی، و مسائلی که به توجه فوری نیاز دارند.

msvcrt.CRT_ASSERT

شکست‌های ادعا.

msvcrt.CRTDBG_MODE_DEBUG

پیام را در پنجره‌ی خروجی اشکال‌زدا می‌نویسد.

msvcrt.CRTDBG_MODE_FILE

پیام را در یک دسته‌ی پرونده ارائه‌شده توسط کاربر می‌نویسد. باید CrtSetReportFile() فراخوانی شود تا پرونده یا جریان مشخصی که به‌عنوان مقصد استفاده می‌شود تعریف شود.

msvcrt.CRTDBG_MODE_WNDW

یک جعبه پیام برای نمایش پیام به همراه دکمه‌های Abort، Retry و Ignore ایجاد می‌کند.

msvcrt.CRTDBG_REPORT_MODE

mode جاری برای type مشخص‌شده را بازمی‌گرداند.

msvcrt.CRT_ASSEMBLY_VERSION

نسخه‌ی CRT Assembly، از پرونده‌ی سرآیند crtassem.h.

msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN

توکن کلید عمومی VC Assembly، از پرونده‌ی سرآیند crtassem.h.

msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX

پیشوند نام اسمبلی کتابخانه‌ها (Libraries Assembly)، از پرونده‌ی سرآیند crtassem.h.