请教各位先进~
我想用SIGSEGV来重启原来的程式(有点像回圈)
但第二次的Segmentation fault无法触发
请教要怎麽修改或是有其他方式吗?
感谢~
void sighandler (int signal_number)
{
signal(SIGTERM, SIG_IGN);
if (fork() == 0)
{
printf("run app again;\n");
system("./testapp");
exit(EXIT_SUCCESS);
}
exit(EXIT_SUCCESS);
}
int main(int argc, char *argv[])
{
printf("run app start!! %d\n", getpid());
struct sigaction sa;
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &sighandler;
sigaction (SIGSEGV, &sa, NULL);
sleep(3);
*(volatile unsigned char *)0;
return 0;
}
--
你是为了旅行而摄影 还是为了摄影而旅行
http://blog.dcview.com/awaysu
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.231.88
※ 编辑: awaysu 来自: 114.32.231.88 (08/04 17:25)
1F:→ dou0228:正常应该用 SIGHUP 不是乱用 SIGSEGV 08/08 11:14
2F:→ stpaul:像这样的处里,我会倾向用shell和trap来跑,也保持程式的单 08/08 13:03
3F:→ stpaul:纯性和弹性... 08/08 13:04