posix --- رایجترین فراخوانیهای سیستمی POSIX¶
این ماژول دسترسی به قابلیتهای سیستمعاملی را فراهم میکند که توسط استاندارد C و استاندارد POSIX (یک رابط Unix با پوششی بسیار نازک) استاندارد شدهاند.
دسترسپذیری: Unix.
این ماژول را بهصورت مستقیم ایمپورت نکنید. در عوض، ماژول os را ایمپورت کنید، که نسخهای قابلحمل از این رابط ارائه میدهد. در یونیکس، ماژول os ابرمجموعهای از رابط posix را ارائه میدهد. در سیستمعاملهای غیر یونیکسی، ماژول posix در دسترس نیست، اما زیرمجموعهای همیشه از طریق رابط os در دسترس است. پس از ایمپورت شدن os، استفاده از آن به جای posix هیچ جریمهای از نظر کارایی ندارد. علاوه بر این، os برخی قابلیتهای اضافی را ارائه میدهد، مانند فراخوانی خودکار putenv() هرگاه یک ورودی در os.environ تغییر کند.
خطاها بهصورت استثنا گزارش میشوند؛ برای خطاهای نوعی، استثناهای معمول داده میشوند، در حالی که خطاهای گزارششده از سوی فراخوانیهای سیستم، OSError را پرتاب میکنند.
پشتیبانی از پروندههای بزرگ¶
چندین سیستمعامل (از جمله AIX و Solaris) پشتیبانی از پروندههایی که بزرگتر از ۲ GiB هستند را از طریق یک مدل برنامهنویسی C که در آن int و long مقادیر ۳۲بیتی هستند، فراهم میکنند. این کار معمولاً با تعریف نوعهای مرتبط با اندازه و آفست بهعنوان مقادیر ۶۴بیتی انجام میشود. به چنین پروندههایی گاهی پروندههای بزرگ <large files> گفته میشود.
پشتیبانی از پروندههای بزرگ زمانی در پایتون فعال میشود که اندازهی یک off_t بزرگتر از یک long باشد و long long حداقل به اندازهی یک off_t بزرگ باشد. ممکن است لازم باشد پایتون را با پرچمهای خاصی از کامپایلر پیکربندی و کامپایل کنید تا این حالت فعال شود. برای مثال، در Solaris 2.6 و 2.7 باید کاری مانند زیر انجام دهید:
CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
./configure
در سیستمهای لینوکسی با قابلیت پشتیبانی از پروندههای بزرگ، ممکن است این کار کند:
CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
./configure
محتویات قابلتوجه ماژول¶
علاوه بر بسیاری از توابعی که در مستندات ماژول os توضیح داده شدهاند، posix آیتم دادهی زیر را تعریف میکند:
- posix.environ¶
دیکشنریای که نشاندهندهی محیط رشتهای در زمان آغاز مفسر است. کلیدها و مقادیر در یونیکس از نوع bytes و در ویندوز از نوع str هستند. برای مثال،
environ[b'HOME'](در ویندوزenviron['HOME']) نام مسیر پوشهی خانگی شماست که معادلgetenv("HOME")در C است.تغییر این دیکشنری بر محیطی که بهصورت رشته توسط
execv()،popen()یاsystem()منتقل میشود، تأثیری نمیگذارد؛ اگر نیاز به تغییر محیط دارید،environرا بهexecve()بدهید یا انتسابهای متغیر و دستورهای export را به رشتهی فرمان برایsystem()یاpopen()اضافه کنید.تغییر یافته در نسخهی 3.2: در یونیکس، کلیدها و مقادیر بایت هستند.
توجه
ماژول
osیک پیادهسازی جایگزین ازenvironارائه میدهد که در صورت تغییر، محیط را بهروزرسانی میکند. همچنین توجه داشته باشید که بهروزرسانیos.environاین دیکشنری را منسوخ خواهد کرد. توصیه میشود بهجای دسترسی مستقیم به ماژولposix، از نسخهی این مورد در ماژولosاستفاده کنید.