【问题标题】:Why python subprocess.Popen need close_fd parameter?为什么 python subprocess.Popen 需要 close_fd 参数?
【发布时间】:2017-05-31 23:15:55
【问题描述】:

创建子进程似乎需要从调用者那里关闭一些 fd,例如,如果调用者打开了 fd 0,1,2(stdin,out,err) 和 fd=3(名为“a.txt”的文件),则子进程.Popen 设置“close_fd=True”,比如

p=subprocess.Popen(cmd,shell=True,close_fds=True,stdout=None...

意思是:

(1) fd 0-3 在子进程中关闭?

(2) 如果 fd 0-3 已关闭,如何将打印行子处理到屏幕,或通过以下方式与调用者通信其输入/输出:

p.communicate()

只是有点困惑。解释?

【问题讨论】:

    标签: python file subprocess popen descriptor


    【解决方案1】:

    只有3 关闭。来自Popen docs

    如果 close_fds 为 true,则除 0、1 和 2 之外的所有文件描述符都将 在子进程执行之前关闭。 (仅限 POSIX)。

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 2017-01-20
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      相关资源
      最近更新 更多