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)为intlong是 32 位值的 C 编程模型提供了对大于 2 GB 的文件的支持。通常pass将相关大小和偏移量类型定义为 64 位值来实现。此类文件有时称为大文件

off_t的大小大于longlong 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()的命令字符串。

Note

os模块提供environ的替代实现,该实现在修改时会更新环境。还要注意,更新os.environ将使该字典过时。建议直接使用posix模块而不使用os模块版本。