最近很多小伙伴都在问如何从python中杀死进程和子进程?和pythonos.kill杀进程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展linux–使用SIGKILL杀死父进程
最近很多小伙伴都在问如何从python中杀死进程和子进程?和python os.kill杀进程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展linux – 使用SIGKILL杀死父进程和子进程、python 3.x中的多线程和子进程问题、python – 从另一个进程中杀死线程、python 获取主机名 根据端口杀死进程等相关知识,下面开始了哦!
本文目录一览:- 如何从python中杀死进程和子进程?(python os.kill杀进程)
- linux – 使用SIGKILL杀死父进程和子进程
- python 3.x中的多线程和子进程问题
- python – 从另一个进程中杀死线程
- python 获取主机名 根据端口杀死进程
如何从python中杀死进程和子进程?(python os.kill杀进程)
例如从bash:
杀死-9 -PID
os.kill(pid, signal.SIGKILL)
仅杀死父进程。
答案1
小编典典当您将 负 PID传递给时kill
,它实际上会通过该(绝对)数字将信号发送到过程 组
。您可以os.killpg()
在Python中完成与之等效的操作。
linux – 使用SIGKILL杀死父进程和子进程
trap "kill $$" SIGINT trap 'kill -HUP 0' EXIT trap 'kill $(jobs -p)' EXIT
这些命令正在使用kill [parent_process_ID]命令,但如果我使用kill -9 [parent_process_ID],那么只会杀死父进程.
请进一步指导我实现此功能,以便当我使用任何命令终止父进程时,也应该杀死子进程.
解决方法
如果希望给定组的所有进程都接收信号,则必须将信号发送到进程组.
kill -9 -parentpid
否则,孤儿将被链接到init.
通过在prctl()系统调用中指定选项PR_SET_PDEATHSIG,子代可以要求内核在父级死亡时传递SIGHUP(或其他信号),如下所示:
prctl(PR_SET_PDEATHSIG,SIGHUP);
有关详细信息,请参阅man 2 prctl.
python 3.x中的多线程和子进程问题
您可以使用multiprocessing.Pool
import subprocess,sys
from multiprocessing import Pool
from clean import IndividualExamples
def evaluate_individual(ind):
ind.evaluate()
# the big array
pool = Pool()
for i in range(200):
ind = IndividualExamples.simple_individual((None,None),None)
pool.apply_async(func=evaluate_individual,args=(ind,))
pool.close()
pool.join()
,
谢谢,我只是尝试,但这会引发运行时错误:
raise RuntimeError('''
RuntimeError:
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.
This probably means that you are not using fork to start your
child processes and you have forgotten to use the proper idiom
in the main module:
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
python – 从另一个进程中杀死线程
有帮助吗?
解决方法
from multiprocessing import Process import os,time class myThread(Process): def __init__(self): Process.__init__(self) def run(self): while True: os.system("sleep 5") if __name__ == ''__main__'': p = myThread() p.start() print "Main thread PID:",os.getpid() print "Launched process PID:",p.pid os.kill(p.pid,1) p.join()
python 获取主机名 根据端口杀死进程
ip=os.popen("ifconfig eth0|grep ''inet addr''|awk -F '':'' ''{print $2}''|awk ''{print $1}''")
ip=ip.read().strip()
pid=os.popen("netstat -anp|grep 8998 |awk ''{print $7}''").read().split(''/'')[0]
os.popen(''kill -9 {0}''.format(int(pid)))
今天关于如何从python中杀死进程和子进程?和python os.kill杀进程的介绍到此结束,谢谢您的阅读,有关linux – 使用SIGKILL杀死父进程和子进程、python 3.x中的多线程和子进程问题、python – 从另一个进程中杀死线程、python 获取主机名 根据端口杀死进程等更多相关知识的信息可以在本站进行查询。
本文标签: