我試圖讓我的程序重新啓動自己,但似乎沒有任何工作。我試過用fork()
,但是查殺後parent
進程child
也被殺死了。如何讓程序自行重啓? (Linux進程)
CODE
void sigup_handler(int signum) {
int pid = fork();
if (pid == 0) {
execve("prog2", NULL);
}
else
kill(getpid(), SIGTERM);
}
int main() {
puts("Program 2 started.");
signal(SIGHUP, sigup_handler);
sleep(50);
puts("Program 2 terminated.");
return 0;
}
它輸出節目2開始daemon(3)。計劃2開始。用簡單的execve(「prog2」,NULL);這使我困惑。不應該顯示「程序2已終止」。 – bvk256
它永遠不會調用「程序2終止」,因爲父母已經用kill(getpid(),...)終止了自己; –
好的,那麼。無論如何,這個信息很容易通過將它放置在一個進程被保證終止的地方來實現。 – bvk256