0

我正在阅读有关子流程的一些代码并遇到了这一行

proc = Popen(
            cmd.split(), stderr=stderr, stdout=stdout,
            close_fds=(name == 'posix'), cwd=self.path, **kwargs)

前几个参数很容易解释,但我不明白是什么

close_fds=(name == 'posix')

部分可以。有人可以解释 close_fds 的工作原理以及 (name == 'posix') 返回的内容吗?

名称也没有在范围内的任何地方声明。谢谢。

4

1 回答 1

3

name == 'posix'评估为Trueor 或False取决于nameis 'posix'。那么这个TrueorFalse就变成了close_fds参数 to的值Popen。基本上,这是一种提供一些特定于平台的定制的方法:在 Windows 上,文件描述符在命令执行之前不会关闭,而在类 UNIX 操作系统(包括 Mac OS X 和 Linux)上,它们会。这是由于此选项在两个平台上的行为不同所致。有关此论点的更多信息,请参阅subprocess.Popen 文档

name在某处定义,否则你会得到一个NameError. 它可能是全局的,可能使用通配符导入 ( from xxxx import *) 从另一个模块导入。

于 2013-10-28T14:47:45.690 回答