求助 :linux 用信号量机制实现重新启动程序

思路如下 捕获信号量SIGINT ,再用execl重新在进程中载入自身 问题 前几次还好,但是后面就对ctrol + C 没反应了 不知道是啥问题

运行结果如下:
program start ....
./rsr
the 0 ...
^Csignal captured...
program start ....
./rsr
the 0 ...
^Csignal captured...
program start ....
./rsr
the 0 ...
^Cthe 1 ...
^C^Cthe 2 ...
^C^Cthe 3 ...
the 4 ...
the 5 ...
the 6 ...
the 7 ...
the 8 ...
the 9 ...

#include<stdio.h>
#include<signal.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>

void func(int sig);

int main (int argc, char* argv[])
{
    int i = 0;
    struct sigaction act,oldact;
    act.sa_handler=func;

    printf("program start ....\n");
    printf("%s\n",path);

    sigaction(SIGINT,&act,&oldact);

    for(;i<10;i++)
    {
        printf("the %d ...\n",i);

        sleep(1);

    }

    return 0;
}

void func(int i)
{
    printf("signal captured...\n");
        execl("/home/myx/yxsys/restart/rsr","./rsr",NULL);
}
阅读 3.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题