36.1. posix — 最常见的 POSIX 系统调用 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/posix
跳转至:导航、​搜索

36.1. posix — 最常见的 POSIX 系统调用

该模块提供对由 C 标准和 POSIX 标准(一种伪装的 Unix 接口)标准化的操作系统功能的访问。

不要直接导入这个模块。 而是导入模块os,它提供了这个接口的portable版本。 在 Unix 上,os 模块提供了 posix 接口的超集。 在非 Unix 操作系统上,posix 模块不可用,但始终可以通过 os 接口访问子集。 一旦导入 os,使用它代替 posix 时会出现 no 性能损失。 此外,os 提供了一些额外的功能,例如当 os.environ 中的条目更改时自动调用 putenv()

错误报告为异常; 通常的例外是类型错误,而系统调用报告的错误会引发 OSError

36.1.1. 大文件支持

一些操作系统(包括 AIX、HP-UX、Irix 和 Solaris)支持来自 C 编程模型的大于 2 GB 的文件,其中 intlong 是 32 位值。 这通常通过将相关大小和偏移类型定义为 64 位值来实现。 此类文件有时称为 大文件

off_t 的大小大于 long 并且 long long 类型可用且至少与 off_t。 然后使用 Python long 表示文件大小、偏移量和其他可能超出 Python int 范围的值。 可能需要使用某些编译器标志配置和编译 Python 以启用此模式。 例如,在最新版本的 Irix 中默认启用它,但是对于 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

36.1.2. 值得注意的模块内容

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

posix.environ

表示解释器启动时字符串环境的字典。 例如,environ['HOME'] 是您的主目录的路径名,相当于 C 中的 getenv("HOME")

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

笔记

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