如何在管道中使用“子进程”命令

如何在管道中使用“子进程”命令

我想用subprocess.check_output()带着ps -A | grep 'process_name'..我尝试了各种解决方案,但到目前为止都没有效果。有人能指导我怎么做吗?



尚方宝剑之说
浏览 620回答 3
3回答

缥缈止盈

若要使用管道,请将subprocess模块,你必须通过shell=True.然而,由于各种原因,尤其是安全方面的原因,这是不可取的。相反,创建ps和grep单独处理,并将输出从一条管道输送到另一条,如下所示:ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)ps.wait()然而,在您的特定情况下,简单的解决方案是调用subprocess.check_output(('ps', '-A'))然后str.find在输出上。

阿晨1998

或者,您可以始终对子进程对象使用通信方法。cmd = "ps -A|grep 'process_name'"ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)output = ps.communicate()[0]print output通信方法返回标准输出和标准错误的元组。
打开App,查看更多内容
随时随地看视频慕课网APP