請教各位先進~
我想用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)
→ dou0228:正常應該用 SIGHUP 不是亂用 SIGSEGV 08/08 11:14
→ stpaul:像這樣的處裡,我會傾向用shell和trap來跑,也保持程式的單 08/08 13:03
→ stpaul:純性和彈性... 08/08 13:04