为什么 python subprocess.Popen 需要 close_fd 参数?
Why python subprocess.Popen need close_fd parameter?
创建一个子进程似乎需要从调用者那里关闭一些 fd,例如,如果调用者打开了 fd 0,1,2(stdin,out,err) 和 fd=3(名为 "a.txt" 的文件), subprocess.Popen 设置 "close_fd=True",如
p=subprocess.Popen(cmd,shell=True,close_fds=True,stdout=None...
是否表示:
(1) fd 0-3 在子进程中关闭?
(2) 如果 fd 0-3 关闭,子进程如何将打印行打印到屏幕,或通过以下方式将其 input/output 与调用者通信:
p.communicate()
只是有点困惑。解释?
只有3
关闭了。来自 Popen docs:
If close_fds is true, all file descriptors except 0, 1 and 2 will be
closed before the child process is executed. (POSIX only).
创建一个子进程似乎需要从调用者那里关闭一些 fd,例如,如果调用者打开了 fd 0,1,2(stdin,out,err) 和 fd=3(名为 "a.txt" 的文件), subprocess.Popen 设置 "close_fd=True",如
p=subprocess.Popen(cmd,shell=True,close_fds=True,stdout=None...
是否表示:
(1) fd 0-3 在子进程中关闭?
(2) 如果 fd 0-3 关闭,子进程如何将打印行打印到屏幕,或通过以下方式将其 input/output 与调用者通信:
p.communicate()
只是有点困惑。解释?
只有3
关闭了。来自 Popen docs:
If close_fds is true, all file descriptors except 0, 1 and 2 will be closed before the child process is executed. (POSIX only).