posix --- 最常见的 POSIX 系统调用


此模块提供了对基于 C 标准和 POSIX 标准(一种稍加修改的 Unix 接口)进行标准化的系统功能的访问。

可用性: Unix.

请勿直接导入此模块。 应导入模块 os,该模块提供了此接口的*可移植*版本。在 Unix 系统中,os 模块提供了 posix 接口的超集;在非 Unix 操作系统上,posix 模块不可用,但始终可通过 os 接口获得其子集。一旦导入 os,使用它替代 posix 将*不会*造成任何性能损失。此外,os 还提供一些额外功能,例如当 os.environ 中的某条记录发生变更时,会自动调用 putenv()。

错误将作为异常被报告;对于类型错误会给出普通异常,而系统调用所报告的错误则会引发 OSError。

大文件支持

某些操作系统(包括 AIX 和 Solaris)可对 int 和 long 为 32 位值的 C 编程模型提供大于 2 GiB 文件的支持。 这在通常情况下是以将相关数据的大小和偏移量类型定义为 64 位值的方式来实现的。 这样的文件有时被称为 大文件。

Python 中的大文件支持会在 off_t 的大小超过 long 且 long long 的大小至少与 off_t 一样时被启用。 要启用此模式可能必须在启用特定编译旗标的情况下配置和编译 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 上为 bytes 而在 Windows 上为 str。 例如,environ[b'HOME'] (Windows 上的 environ['HOME']) 是你的家目录的路径名,等价于 C 中的 getenv("HOME")。

修改此字典不会影响由 execv(), popen() 或 system() 所传入的字符串环境;如果你需要修改环境,请将 environ 传给 execve() 或者为 system() 或 popen() 的命令字符串添加变量赋值和 export 语句。

在 3.2 版本发生变更: 在 Unix 上,键和值为 bytes 类型。

备注

os 模块提供了 environ 的另一种实现方式,可在环境发生变更时对其进行更新。另请注意,更新 os.environ 会使该字典失效。建议采用 os 模块中的此版本,而非直接访问 posix 模块。