为什么80%的码农都做不了架构师?>>>   

    def _stop_unix(self, errors):"""UNIX implementation of process killing@param errors: error messages. stop() will record messages into this list.@type  errors: [str]"""self.exit_code = self.popen.poll() if self.exit_code is not None:logger.debug("process[%s].stop(): process has already returned %s", self.name, self.exit_code)#print "process[%s].stop(): process has already returned %s"%(self.name, self.exit_code)self.popen = Noneself.stopped = Truereturnpid = self.popen.pidpgid = os.getpgid(pid)logger.info("process[%s]: killing os process with pid[%s] pgid[%s]", self.name, pid, pgid)try:# Start with SIGINT and escalate from there.logger.info("[%s] sending SIGINT to pgid [%s]", self.name, pgid)os.killpg(pgid, signal.SIGINT)logger.info("[%s] sent SIGINT to pgid [%s]", self.name, pgid)timeout_t = time.time() + _TIMEOUT_SIGINTretcode = self.popen.poll()while time.time() < timeout_t and retcode is None:time.sleep(0.1)retcode = self.popen.poll()# Escalate non-responsive processif retcode is None:printerrlog("[%s] escalating to SIGTERM"%self.name)timeout_t = time.time() + _TIMEOUT_SIGTERMos.killpg(pgid, signal.SIGTERM)logger.info("[%s] sent SIGTERM to pgid [%s]"%(self.name, pgid))retcode = self.popen.poll()while time.time() < timeout_t and retcode is None:time.sleep(0.2)logger.debug('poll for retcode')retcode = self.popen.poll()if retcode is None:printerrlog("[%s] escalating to SIGKILL"%self.name)errors.append("process[%s, pid %s]: required SIGKILL. May still be running."%(self.name, pid))try:os.killpg(pgid, signal.SIGKILL)logger.info("[%s] sent SIGKILL to pgid [%s]"%(self.name, pgid))# #2096: don't block on SIGKILL, because this results in more orphaned processes overall#self.popen.wait()#os.wait()logger.info("process[%s]: sent SIGKILL", self.name)except OSError as e:if e.args[0] == 3:printerrlog("no [%s] process with pid [%s]"%(self.name, pid))else:printerrlog("errors shutting down [%s], see log for details"%self.name)logger.error(traceback.format_exc())else:logger.info("process[%s]: SIGTERM killed with return value %s", self.name, retcode)else:logger.info("process[%s]: SIGINT killed with return value %s", self.name, retcode)finally:self.popen = None

参考:http://wiki.ros.org/roslaunch

转载于:https://my.oschina.net/itfanr/blog/2050677

python kil 掉子进程相关推荐

  1. python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解

    问题产生描述 使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理. 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess ...

  2. Python实战之子进程

    Python实战之子进程 最近做一个小工具需要用到Python的字进程,看了一下Python的API,subprocess模块可以就可以实现,并且还挺简单 要实现一个简单的自进程,只需要 [pytho ...

  3. python进程池(子进程)函数没有执行

    文章目录 1. 问题描述 问题排查经过 关于此问题的两个可能原因 内容较长 1. 问题描述 某日,写了一段爬虫代码(如下,爬取糗百图片代码示例),发现一个异常的问题,就是执行代码时,代码会以极快的速度 ...

  4. Python的subprocess子进程和管道进行交互

    在很久以前,我写了一个系列,Python和C和C++的交互,如下 http://blog.csdn.net/marising/archive/2008/08/28/2845339.aspx 目的是解决 ...

  5. python程序开子进程打包成exe文件运行炸内存原因剖析

    from multiprocessing import Processdef task():print("hahaha")passif __name__ == '__main__' ...

  6. python主进程 子进程_pool主进程捕获子进程异常

    问题背景: 主进程做任务调度,子进程做任务执行,子进程定时返回进度信息,主进程获取进度,进度为100时,子进程任务结束.子进程执行过程中如果有异常,主进程需要捕获 python多进程调度, 主进程如何 ...

  7. python实时获取子进程输出_Python 从subprocess运行的子进程中实时获取输出的例子...

    有些时候,我们需要将某些程序放到子进程中去运行,以达到整合系统的目的.在Python中,一个非常好的选择就是使用subprocess模块,本模块为开辟子进程去执行子程序提供了统一的接口,更加便于学习和 ...

  8. python子进程修改父进程内变量_如何将父变量传递给python中的子进程?

    这里的简单答案是:不要使用subprocess.Popen,使用 multiprocessing.Process.或者,更好的是,multiprocessing.Pool或 concurrent.fu ...

  9. python结束子进程_如何清除python中的子进程

    我们使用python进程来管理长时间运行的python子进程.有时需要终止子进程.kill命令不会完全终止进程,只会使其失效. 运行以下脚本将演示此行为.import subprocess p = s ...

最新文章

  1. PHP中session和cookie的区别
  2. Kotlin问题解决
  3. android ------- TCP/IP
  4. ShardingSphere 系列
  5. cfile read 最大读取限制_pandas读取表格后的常用数据处理操作
  6. java结构体系_java io结构体系
  7. micropython stm32f407 以太网_[MicroPython]STM32F407开发板DIY声光控开关
  8. 掌控谈话~让对方说“你说得对
  9. mock()java,关于java:@ Mock,@ MockBean和Mockito.mock()之间的区别
  10. php字长是什么,计算机的字长是指什么
  11. 第 2 章 类加载子系统
  12. 【LeArm】动手实践机械臂(一)
  13. iPhone6分辨率
  14. grafana 中国地图 echarts
  15. Video Matting:AI视频抠图
  16. 电脑桌面便签小工具下载,好用的桌面便签软件推荐
  17. VS间接寻址级别不同
  18. Word及Autocad中中文字号与字体大小的关系
  19. 查看qq空间说说及评论,设置相关表结构
  20. 西门子S7-1200 移位指令SHL

热门文章

  1. 新人 天池大数据初涉水
  2. 5分钟带你学懂ROC曲线
  3. C中格式化输出%lf,输出为保留6位小数的数。
  4. 2022-2028中国聚合物增材制造系统市场现状研究分析与发展前景预测报告
  5. CSDN写博客去除上传图片的水印
  6. while (n-- 0) 的用法
  7. 剑指offer面试题(31-40)——java实现
  8. 谷粒商城学习笔记(2)-- 环境搭建项目结构创建
  9. 经纬度两点距离计算器_怎么确定最佳观影距离?内含懒人计算器
  10. 新手必读:一个牛人给的java九点建议