跑系统操作系统命令作为子进程python

2024-09-22 20:19:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想运行以下操作系统命令作为子进程,以便知道其pid,因为我希望能够执行

proc.terminate()

下面是工作的os.system()命令。请注意,bellow命令已经打开了一个子shell,因为setview就是这样做的,然后在该子shell中执行一个python脚本,然后退出该子shell。在

^{pr2}$

我试过了

import subprocess
cmd = "/usr/atria/bin/cleartool setview -exec '/usr/bin/python /home/testUser/Development/Scripts/setDoneFlag_Count_Lines.py' testUser__project_5_0_myProject_001"
p=subprocess.Popen(cmd.split(), shell=True)

取自此stackoverflow线程:How to determine pid of process started via os.system 但它只执行第一个/usr/atria/bin/cleartool,而不执行其他命令。任何人都知道如何编写一个与我的操作系统打电话?在

提前谢谢。在


Tags: 命令cmdbin进程osusrprocshell
2条回答

你为什么要分开指挥?不要使用命令拆分(). 试试这个:

import subprocess
cmd = "/usr/atria/bin/cleartool setview -exec '/usr/bin/python /home/testUser/Development/Scripts/setDoneFlag_Count_Lines.py' testUser__project_5_0_myProject_001"
p=subprocess.Popen([cmd], stdout=subprocess.PIPE,shell=True)
out, err = p.communicate()
print out

.split在这里没有帮你什么忙,因为引号中有空格,你不想拆分。或者直接传递一个字符串,然后让shell处理参数分隔:

cmd = "/usr/atria/bin/cleartool setview -exec '/usr/bin/python /home/testUser/Development/Scripts/setDoneFlag_Count_Lines.py' testUser__project_5_0_myProject_001"
p=subprocess.Popen(cmd, shell=True)

或手动分离命令:

^{pr2}$

相关问题 更多 >