我需要通过python脚本或python程序运行“myexe”可执行文件:
./myexe arg1 arg2 >& outfile
我的方法如下:
^{pr2}$这里我注意到,当我使用io重定向时,系统命令打印的进程id(第10行)与else部分打印的进程id(第14行)不同。在
如果我将命令用作“./myexe arg1 arg2”,那么进程id的值是正确的。 那么,如何将subprocess与shell命令一起使用呢?shell命令也使用io重定向?在
这里重定向用于同一文件中的stderr和stdout。在
请帮助我解决这个问题,并分享实现这一目标的有效方法。 另外,如果在任意延迟之后没有使用某种有效的方法结束(终止)进程id-x呢?在
除此之外,我最后怎么知道进程是成功终止还是发送终止信号: 我按如下方式进行:
if proc.wait() == 0:
print 'Terminate successfully'
else:
print 'Terminated by kill signal'
或者在调用后设置一些标志杀戮()也可以使用。在
它是否符合python规则/预期用途?在
注: 为了避免myexe可执行文件中可能出现的无限循环场景,需要终止该进程。 outfile由python脚本进一步读取(此处未显示)。在
由于
shell=True
参数,您的pid不同。Python产生一个中间shell进程。在流程树如下所示:
将第6行替换为沿着这两条线的内容
^{pr2}$并且您的pid将匹配,而两个流都将被重定向到同一个文件(确保
./myexe
刷新这些流)。在如果您想使用shell,应该参考这个问题:How to terminate a python subprocess launched with shell=True。在
相关问题 更多 >
编程相关推荐