c++ - 如何杀死程序的所有进程?

标签 c++ linux process kill

我写了一个程序,用 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/

相关文章:

regex - 使用 bash 获取 http 进程用户

c++ - 对引用成员进行偏移(非 POD)

c++ - 使用 C++11 type_traits 了解 Microsoft 的 _Is_duration

linux - 在 Linux 上使用 Cocos2dx 制作游戏

linux - 在 Unix while-do 循环中,比较条件失败

c# - 在运行时切换 Process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden

c++ - boost MPL::vector 未被识别且元状态机 (MSM) 转换表未定义

c++ - 为什么我们必须定义一个在类中初始化的 const 静态成员

linux - 在 R 中停止 nohup 并行模拟

c - 在 C 中等待兄弟进程