首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >os.kill在衍生进程上不起作用

os.kill在衍生进程上不起作用
EN

Stack Overflow用户
提问于 2015-02-26 22:54:38
回答 1查看 12.2K关注 0票数 10

我已经编写了自己的基于Python的作业调度器,它使用多处理模块来生成新作业。我正在尝试实现一个使用os.kill杀死正在运行的进程的功能,但它不起作用。我的(简化)代码如下所示:

代码语言:javascript
运行
复制
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()
        ...

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

代码语言:javascript
运行
复制
import os, signal    
os.kill(3064, signal.SIGTERM)

如果我在父进程/派生进程的pid上运行os.kill,那么它可以工作,但是如果我在子进程/派生进程的pid上执行它,它就不能工作。除了SIGTERM,我还尝试了一些其他的信号,如SIGKILL,SIGQUIT等,它们也都不起作用。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 04:26:18

我解决了这个问题,方法是创建一个进程组,使用subprocess模块创建进程,并使用os.killpg()终止该进程,如下所述:https://stackoverflow.com/a/4791612/2636544

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28745568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档