posix — 最常见的 POSIX 系统调用


此模块提供对 C 标准和 POSIX 标准(一个经过轻微伪装的 Unix 接口)标准化的操作系统功能的访问。

可用性:Unix。

不要直接导入此模块。 而是导入模块 os,它提供此接口的可移植版本。在 Unix 上,os 模块提供了 posix 接口的超集。在非 Unix 操作系统上,posix 模块不可用,但始终可以通过 os 接口获得子集。一旦导入 os,使用它代替 posix没有性能损失。此外,os 提供了一些额外的功能,例如在 os.environ 中的条目发生更改时自动调用 putenv()

错误以异常形式报告;通常的异常是类型错误,而系统调用报告的错误会引发 OSError

大文件支持

多个操作系统(包括 AIX 和 Solaris)提供了对大于 2 GiB 的文件的支持,其 C 编程模型中 intlong 是 32 位值。这通常是通过将相关的大小和偏移类型定义为 64 位值来实现的。此类文件有时称为大文件

off_t 的大小大于 long 并且 long long 至少与 off_t 一样大时,Python 中会启用大文件支持。可能需要使用某些编译器标志配置和编译 Python 才能启用此模式。例如,对于 Solaris 2.6 和 2.7,您需要执行类似的操作

CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
        ./configure

在支持大文件的 Linux 系统上,这可能有效

CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
        ./configure

模块主要内容

除了在 os 模块文档中描述的许多函数之外,posix 定义了以下数据项

posix.environ

一个字典,表示解释器启动时的字符串环境。在 Unix 上,键和值是字节,在 Windows 上是字符串。例如,environ[b'HOME'](在 Windows 上是 environ['HOME'])是您主目录的路径名,等效于 C 中的 getenv("HOME")

修改此字典不会影响 execv()popen()system() 传递的字符串环境;如果您需要更改环境,请将 environ 传递给 execve() 或将变量赋值和导出语句添加到 system()popen() 的命令字符串中。

在 3.2 版本中更改: 在 Unix 上,键和值是字节。

注意

os 模块提供了 environ 的另一种实现,它会在修改时更新环境。另请注意,更新 os.environ 将使此字典过时。建议使用 os 模块的此版本,而不是直接访问 posix 模块。