os.kill在生成的进程上无法工作

11

我编写了基于Python的作业调度程序,使用multiprocessing模块来生成新的任务。我正在尝试实现一个功能,使用os.kill来终止正在运行的进程,但它不起作用。我的(简化后)代码如下所示:

from multiprocessing import Process
import os
...
p = Process(target=self.start_job, args=(run_dir,cmd,))
p.start()
...
def start_job(self,run_dir,cmd):
        os.chdir(run_dir)
        os.system(cmd)
        print os.getpid()
        ...

我想要获取输出的pid(例如3064),并在另一个python会话中运行:

import os, signal    
os.kill(3064, signal.SIGTERM)

os.kill如果在父进程/生成进程的pid上运行,则有效,但如果在子进程/生成的进程的pid上执行,则无效。除了SIGTERM之外,我还尝试过许多其他信号,例如SIGKILL、SIGQUIT等,但它们都不起作用。非常感谢任何帮助。

1个回答

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接