我写了一个程序,用 fork() fork 一些进程。如果出现错误,我想杀死所有子进程和母进程。如果我使用 exit(EXIT_FAILURE),则只有子进程被终止。
我正在考虑一个系统("killall [program_name]") 但必须有更好的方法...
谢谢大家! 伦纳特
最佳答案
在 UNIX 下,发送 SIGTERM,或 SIGABRT,或 SIGPIPE 或 sth。类似于母进程。然后,如果所有客户端未明确阻止或忽略该信号,该信号将自动传播到所有客户端。
使用getppid()
获取要发送信号的PID,并使用kill()
发送信号。
getppid() returns the process ID of the parent of the calling process.
The kill() system call can be used to send any signal to any process group or process.
备注:
1. 使用 system
是邪恶的。使用内部函数发送信号。
2. killall
会更邪恶。考虑您的程序的多个实例同时运行。
关于c++ - 如何杀死程序的所有进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/897321/