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

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;
}

  • 写回答

5条回答 默认 最新

  • Apollon_krj 2017-01-26 16:28
    关注

    已经解决:在父进程执行kill之前sleep(1);以确保子进程先运行,否则父进程先运行,信号发送是有问题的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?