riv*_*era 6 python shell logging redirect subprocess
我很难从python子进程模块中得到我想要的东西(它应该是一个统一的/独立于平台的抽象,afaik,但是不要让我开始那个:)).
所以我所追求的简单事情如下.我想要
现在,我的主要问题是
我希望我足够具体.感谢任何提示/提示 - 我只花了一整天的子流程,恕我直言,这是一个远离平台独立或简单的痛苦: ((但也许只是我)
更新(2010-10-13):
如果你启动一个子进程(即使shell = False),那么subprocess.Popen.kill()函数只会杀死那个子进程(所以如果有任何"孙子"进程,它们将不会被终止. )
我读到了使用preexec_fn参数在所有子进程上设置sid,但它只是unix:超时子进程
上次我遇到类似的情况时,我发现最简单(实际上是唯一)的解决方案是启动一个负责子进程的线程。您可以使用此方法采取不同的路线,无论是解析 shell 样式命令的管道并在 python 代码中执行这些命令(您所说的由于阻塞而不是一个选项),这将同时修复您的问题杀人问题。基本上,线程封装似乎是可行的方法。
遗憾的是,我的经验subprocess都是在 Windows 平台上进行的,该平台有很多自己的小怪癖。subprocess似乎有很多缺陷,尽管考虑到它应该替换的popen、popen2等模块的存在,它必须做得很好。