我正在阅读有关子流程的一些代码,并且正在阅读这一行
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')返回的内容吗?
此名称也未在范围内的任何位置声明。 感谢。
答案 0 :(得分:2)
name == 'posix'
评估为True
或False
,具体取决于name
是'posix'
。然后,此True
或False
成为close_fds
Popen
参数的值。基本上,它是一种提供一些特定于平台的自定义的方式:在Windows上,文件描述符在命令执行之前不会被关闭,而在类UNIX操作系统(包括Mac OS X和Linux)上它们将是。这是由于两个平台上此选项的行为不同。有关此参数的更多信息,请参阅subprocess.Popen
docs。
name
已定义某处,或者您获得NameError
。它可能是全局的,可能使用通配符导入(from xxxx import *
)从另一个模块导入。