[英]Signal system call
我有這個代碼片段,甚至我讀過幾次信號系統調用,但我仍然不明白為什么為什么我第四次按CTRL-C而不是第三次停止該程序。 提前致謝!
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
int i=0;
void handler(int sig)
{
i++;
printf("CTRL-C\n");
if (i==3)
signal(SIGINT, SIG_DFL);
}
int main()
{
signal(SIGINT,handler);
while (1)
{
printf("Hello world!\n");
sleep(1);
}
return 0;
}
我讀到信號系統調用不是可移植的,所以如果我提到我正在使用最新版本的Ubuntu(14.04),這可能會有所幫助。
您的自定義處理程序被調用了三次。 第三次,它注冊一個新的信號處理程序(即默認信號處理程序),該處理程序在下一次發送信號時終止程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.