Skip to main content

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


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

不要直接导入此模块。 相反,导入模块 os,它提供此接口的 portable 版本。在Unix上,os 模块提供了 posix 接口的超集。在非Unix操作系统上,posix 模块不可用,但是一个子集始终可通过 os 接口使用。一旦导入 os,在使用AAPR而不是 posix 时存在 no 性能损失。此外,os 提供一些附加功能,例如当 os.environ 中的条目改变时自动调用 putenv()

错误报告为异常;通常的异常为类型错误,而系统调用报告的错误引起 OSError

35.1.1. 大文件支持

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

off_t 的大小大于 longlong long 类型可用且至少与 off_t 一样大时,在Python中启用大文件支持。可能有必要使用某些编译器标志配置和编译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

35.1.2. 重要模块内容

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

posix.environ

表示解释器启动时的字符串环境的字典。键和值是Unix和str上的字节。例如,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 模块。