【发布时间】:2015-12-08 17:32:10
【问题描述】:
我要执行 bash 命令
'/bin/echo </verbosegc> >> /tmp/jruby.log'
在 python 中使用 Popen。代码不会引发任何异常,但执行后 jruby.log 不会发生任何更改。 python代码如下所示。
>>> command='/bin/echo </verbosegc> >> '+fullpath
>>> command
'/bin/echo </verbosegc> >> /tmp/jruby.log'
>>process = subprocess.Popen(command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
>>> output= process.communicate()[0]
>>> output
'</verbosegc> >> /tmp/jruby.log\n
我还打印出 process.pid,然后使用 ps -ef | 检查 pid grep pid。结果表明进程pid已经完成。
【问题讨论】:
-
以这种方式使用
split()是一种代码味道。不要这样做。
标签: python bash shell subprocess popen