On this page
36.1. posix-最常见的 POSIX 系统调用
该模块提供对 os Function的访问,该Function由 C 标准和 POSIX 标准(一种伪装的 Unix 接口)标准化。
请勿直接导入此模块. 相反,请导入模块os,该模块提供此接口的便携式版本。在 Unix 上,os模块提供posix接口的超集。在非 Unixos 上,posix模块不可用,但始终可以passos接口使用子集。 os导入后,使用它而不是posix不会对性能造成任何影响。此外,os提供了一些其他Function,例如,当os.environ
中的条目更改时自动调用putenv()。
错误被报告为异常;对于类型错误,通常会给出异常,而系统调用报告的错误会引发OSError。
36.1.1. 大文件支持
多个 os(包括 AIX,HP-UX,Irix 和 Solaris)为int
和long
是 32 位值的 C 编程模型提供了对大于 2 GB 的文件的支持。通常pass将相关大小和偏移量类型定义为 64 位值来实现。此类文件有时称为大文件。
当off_t
的大小大于long
且long long
类型可用并且至少与off_t
一样大时,将在 Python 中启用大文件支持。然后使用 Python long 表示文件大小,偏移量和其他可能超出 Python int 范围的值。可能需要使用某些编译器标志配置和编译 Python 才能启用此模式。例如,默认情况下,最新版本的 Irix 启用了此Function,但是对于 Solaris 2.6 和 2.7,您需要执行以下操作:
CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
./configure
在具有大文件Function的 Linux 系统上,这可能会起作用:
CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
./configure
36.1.2. 值得注意的模块内容
除了os模块文档中描述的许多Function之外,posix还定义了以下数据项:
posix.
environ
- 代表解释器启动时的字符串环境的字典。例如,
environ['HOME']
是主目录的路径名,相当于 C 中的getenv("HOME")
。
- 代表解释器启动时的字符串环境的字典。例如,
修改此字典不会影响execv(),popen()或system()传递的字符串环境;如果需要更改环境,请将environ
传递给execve()或添加变量分配并将语句导出到system()或popen()的命令字符串。