如何杀死程序的所有进程?

Len*_*ann 1 c++ linux kill process

我写了一个用fork()分解一些进程的程序.如果出现错误,我想杀死所有孩子和母亲的过程.如果我使用exit(EXIT_FAILURE),则仅杀死子进程.

我正在考虑一个系统("killall [program_name]"),但必须有一个更好的方法......

谢谢你们!伦纳特

ypn*_*nos 5

在UNIX下,发送SIGTERM,SIGABRT或SIGPIPE或sth.与母亲的过程相似.如果它们没有明确地阻止或忽略它,那么该信号将自动传播到所有客户端.

使用getppid()得到PID发送信号,并kill()发送信号.

getppid()返回调用进程父进程的进程ID.

kill()系统调用可用于将任何信号发送到任何进程组或进程.

备注:1.使用system是邪恶的.使用内部功能发送信号.2. killall会更加邪恶.考虑一次运行程序的几个实例.