信号确认

时间:2010-09-27 14:13:48

标签: linux shell unix

如何在发送带键击的中断时杀死子进程,然后向父进程发送子进程被杀死的信号?

2 个答案:

答案 0 :(得分:2)

无论何时儿童死亡,父进程通常都会收到信号。这是SIGCHLD信号。

此信号可以被父进程阻止,但是当孩子出于任何原因退出时,它总是被传递。家长可以通过使用wait家庭之一(又名waitwait3wait4waitpid)来判断孩子退出的原因代码。

答案 1 :(得分:0)

让子进程获得焦点可能是一个挑战,因此它会获得键盘事件。

您始终可以使用kill命令向给定进程发送信号。不要让名称kill误导你,你可以用kill,kill -SIGNUM pid发送任何信号,但SIGTERM是默认值,这通常会导致进程退出。

因此,如果您想向进程11发送SEGV信号,那么

kill -SEGV 11

您可以设置父级来捕获信号,通过调用kill(2)将其重新发送给孩子,然后等待孩子使用waitpid退出。

父母的信号处理程序会像这样:

int status;
kill(child_pid, SIG_TO_SEND);/*send to child*/
waitpid(child_pid, &status);/* wait for child to give up */

如果你认真对待父母,并且知道信号仅针对孩子,你可能在父母中设置一个变量,退出信号处理程序,然后完成发送和等待的工作。儿童。一般来说,尽可能快地离开信号处理程序是件好事。