有人可以给我建议吗?谢谢。
我有一个非root(因此我无法读取内核日志)父进程及其子进程的情况,该子进程可能已被内核使用SIGKILL杀死,因为它消耗了大量内存。当它...
wait(2)
,并使用宏wait(2)
检查它是否被信号终止。if (WTERMSIG(status) == SIGKILL) {
...
} else if (WTERMSIG(status) == SIGTERM) {
...
}
waitXXX( )
提供的状态使得可以确定孩子已被信号杀死:首先通过调用(see man page)进行检查,然后调用WIFSIGNALED(wstatus)
确定信号编号。但是,您无法确定该进程是否被内核或另一个调用WTERMSIG(wstatus)
的进程杀死。