我試圖讓程序在收到信號後重新載入本身。我有這樣的代碼執行後無法捕捉信號
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void signal_callback_handler(int signum){
printf("Caught signal %d\n",signum);
execv("./test", NULL); //reexec myself
}
int main()
{
signal(SIGINT, signal_callback_handler);
printf("Program STARTED\n");
while(1){
printf("Program processing stuff here.\n");
sleep(1);
}
return EXIT_SUCCESS;
}
的問題是,高管程序後,就忽略信號,而不是調用信號處理程序。 輸出:
Program STARTED
Program processing stuff here.
Program processing stuff here.
^CCaught signal 2
Program STARTED
Program processing stuff here.
^C^CProgram processing stuff here.
^C^C^C^C^CProgram processing stuff here.
^C^CProgram processing stuff here.
如何使Exec之後信號處理工作?
可能重複的[是否有可能信號處理程序生存後「執行」?](http://stackoverflow.com/questions/2333637/is-it-possible-to-signal-handler-to-survive-後執行) –
我已經讀過這個問題。我需要相反的事情 - 我期望exec將取代進程,然後signal()將設置新的信號處理程序,我不需要保留舊的處理程序,程序將只是重新啓動它們,但此重新初始化不起作用 – user1940679
@MartinR不,這不是重複的。 –