思路如下 捕获信号量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);
}