close_fds =(name =='posix')

时间:2013-10-28 14:43:23

标签: python posix

我正在阅读有关子流程的一些代码,并且正在阅读这一行

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

前几个args非常自我解释,但我无法理解

close_fds=(name == 'posix')

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

此名称也未在范围内的任何位置声明。 感谢。

1 个答案:

答案 0 :(得分:2)

name == 'posix'评估为TrueFalse,具体取决于name'posix'。然后,此TrueFalse成为close_fds Popen参数的值。基本上,它是一种提供一些特定于平台的自定义的方式:在Windows上,文件描述符在命令执行之前不会被关闭,而在类UNIX操作系统(包括Mac OS X和Linux)上它们将是。这是由于两个平台上此选项的行为不同。有关此参数的更多信息,请参阅subprocess.Popen docs

name已定义某处,或者您获得NameError。它可能是全局的,可能使用通配符导入(from xxxx import *)从另一个模块导入。