Apollon_krj
2017-01-26 07:31
采纳率: 100%
浏览 2.8k
已采纳

fork()父子进程间信号处理(江湖救急)

为什么在子进程中有死循环(如下图),而程序运行之后子进程中的死循环自动结束了,并且没有对收到的信号做自定义处理(输出:接收到信号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;
}

4条回答 默认 最新

相关推荐 更多相似问题