自分のプログラムを再起動しようとしていますが、何も動作していないようです。私は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;
}
続いdaemon(3)を使用することができます。プログラム2が始まりました。単純なexecve( "prog2"、NULL);これは私を混乱させる。 「プログラム2終了」を表示してはいけませんか? – bvk256
親が既にkill(getpid()、...)で終了しているので、 "Program 2 terminated"を呼び出すことはありません。 –
[OK]をクリックします。とにかく、このメッセージは、1つのプロセスが終了することが保証されている場所に配置することで簡単に達成できます。 – bvk256