为什么在子进程中有死循环(如下图),而程序运行之后子进程中的死循环自动结束了,并且没有对收到的信号做自定义处理(输出:接收到信号2)呢?
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
void accept_signal(int sig){
printf("捕获了信号%d\n",sig);
return;
}
int main(void)
{
pid_t pid = fork();
if(pid < 0){
perror("fork");
exit(EXIT_FAILURE);
}
else if(pid == 0){
signal(SIGINT,accept_signal);
while(1);
}
printf("父进程给子进程%d发送信号2\n",pid);
kill(pid,SIGINT);
return 0;
}