在Linux Ubuntu操作系统下,我使用test.py
运行GObject
个包含subprocess
循环的脚本:
subprocess.call(["test.py"])
现在,这个test.py
将创建进程。有没有办法在Python中终止这个过程?
注意:我不知道进程ID。
如果我没有非常清楚地解释我的问题,我很抱歉,因为我是这个表格的新手并且一般都是python的新手。
答案 0 :(得分:3)
我建议不要使用subprocess.call
,而是构建一个Popen
对象并使用其API:http://docs.python.org/2/library/subprocess.html#popen-objects
特别是: http://docs.python.org/2/library/subprocess.html#subprocess.Popen.terminate
HTH!
答案 1 :(得分:1)
subprocess.call()
只是subprocess.Popen().wait()
:
from subprocess import Popen
from threading import Timer
p = Popen(["command", "arg1"])
print(p.pid) # you can save pid to a file to use it outside Python
# do something else..
# now ask the command to exit
p.terminate()
terminator = Timer(5, p.kill) # give it 5 seconds to exit; then kill it
terminator.start()
p.wait()
terminator.cancel() # the child process exited, cancel the hit
答案 2 :(得分:0)
subprocess.call
等待进程完成并返回退出代码(整数)值,因此无法知道子进程的进程ID。你应该考虑使用subprocess.Popen
forks()子进程。