我有一个学校的项目,需要一些帮助。我正在使用C语言编写服务器和客户端。在服务器中,使用fork为每个客户端创建新进程。我的问题是:如果我使用CTRL+C关闭了服务器,如何杀死所有剩余的进程?谢谢。
我有一个学校的项目,需要一些帮助。我正在使用C语言编写服务器和客户端。在服务器中,使用fork为每个客户端创建新进程。我的问题是:如果我使用CTRL+C关闭了服务器,如何杀死所有剩余的进程?谢谢。
在创建进程后,您可以存储它们的pid,然后在退出时向它们发送sigterm
或sigkill
信号。
您可以通过shell来执行此操作 - 在Linux下,您正在搜索的是killall
命令。
您可以使用线程代替进程(如果项目细节允许的话),并通过变量进行通信。
killall -15 <process name>
kill(0, SIGKILL)
SIGINT
信号处理程序中,杀死其进程组中的所有进程,包括其子进程。当你单独杀死一个进程时,它不会杀死子进程。
如果你想让给定组的所有进程都接收到信号,你必须向进程组发送信号:kill -9 -parentpid
。否则,孤儿进程将链接到init
。