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