-1
下面是這個問題的簡單娛樂:SIGINT葛被逮住一次
void handler(int sig){
if(sig == SIGINT){
printf("Signal caught\n");
execl("./recreate","./recreate",NULL);
}
}
int main(){
printf("Main start\n");
signal(SIGINT,handler);
while(1);
return 0;
}
它只是接收到信號後,再次運行本身。會發生什麼,它只能從終端讀取CTR + C一次。從第二點開始,簡單地在控制檯上寫^ C。我是否需要每次重置處理程序或類似的東西?提前致謝。
'signal'的行爲取決於你的Unix變體。爲了獲得一致的行爲,請使用['sigaction'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaction.html)。 –
通常有良好的信號處理文檔,特別是'signal()'函數可以在線獲取,也可以通過'man'命令獲得。 –
另請注意,'printf'不被認爲是在信號處理程序中調用的安全函數。 –