GVKun编程网logo

如何从python中杀死进程和子进程?(python os.kill杀进程)

10

最近很多小伙伴都在问如何从python中杀死进程和子进程?和pythonos.kill杀进程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展linux–使用SIGKILL杀死父进程

最近很多小伙伴都在问如何从python中杀死进程和子进程?python os.kill杀进程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展linux – 使用SIGKILL杀死父进程和子进程、python 3.x中的多线程和子进程问题、python – 从另一个进程中杀死线程、python 获取主机名 根据端口杀死进程等相关知识,下面开始了哦!

本文目录一览:

如何从python中杀死进程和子进程?(python os.kill杀进程)

如何从python中杀死进程和子进程?(python os.kill杀进程)

例如从bash:

杀死-9 -PID

os.kill(pid, signal.SIGKILL) 仅杀死父进程。

答案1

小编典典

当您将 PID传递给时kill,它实际上会通过该(绝对)数字将信号发送到过程
。您可以os.killpg()在Python中完成与之等效的操作。

linux – 使用SIGKILL杀死父进程和子进程

linux – 使用SIGKILL杀死父进程和子进程

我正在编写一个 shell脚本,其中我有父进程,并且它具有由sleep& amp;创建的子进程.命令.现在我想杀死父进程,以便子进程也将被杀死.我能用以下命令做到这一点:

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中的多线程和子进程问题

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 – 从另一个进程中杀死线程

python – 从另一个进程中杀死线程

我知道杀死一个Thread子类的正确方法是定期检查一些标志(如self.running)是否设置为某个“kill”值,但我有一个可能挂起等待输入的线程我想无论如何要从外部进程中杀死它.

有帮助吗?

解决方法

如果您愿意从线程模块切换到线程接口的多处理模块,那么这是可能的.所有需要做的就是跟踪启动的每个线程/进程的PID.

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 获取主机名 根据端口杀死进程

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 获取主机名 根据端口杀死进程等更多相关知识的信息可以在本站进行查询。

本文标签: