【问题标题】:Get around subprocess not getting reply?绕过子流程没有得到回复?
【发布时间】:2017-05-16 13:01:51
【问题描述】:

我有一个守护进程,它正在查询硬件并根据响应采取行动。我注意到,由于某种原因,我得到回复的可能性很小,并且我的守护进程会启动一个新的自身实例。

这是因为我的代码由于 communicate() 而被阻塞,它永远不会得到回复,所以永远不会返回。

 ps = subprocess.Popen(cmd,
 stdout=subprocess.PIPE,
 stderr=subprocess.STDOUT)
 out = ps.communicate()
 return out

我可以通过什么方式避免这个问题?我在linux 上使用2.7,我看到3.3+subprocess 中有超时可用,但我没有,任何非阻塞方式可以做到这一点?信号报警器有用吗?

【问题讨论】:

    标签: python python-2.7 subprocess nonblocking


    【解决方案1】:

    试试这个:

    ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = ps.communicate()
    print out
    print err
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多