從編程的Linux編程接口下面的示例邁克爾·凱里斯克信號處理程序實例在Linux編程接口
static void sigHandler(int sig){
printf("Ouch!\n");
}
int main(int argc, char *argv[])
{
int j;
if (signal(SIGINT, sigHandler) == SIG_ERR)
errExit("signal");
for (j = 0; ; j++){
printf("%d\n", j);
sleep(3);
}
}
應該打印「哎喲!」每當用戶鍵入Control-C(CTRL + C)在作者自己的例子中,他在鍵入它兩次之後最終用Control- \(CTRL + \)退出終端。
當我這樣做時,程序按照預期在上工作,只有第一次執行CTRL + C。如果我第二次輸入它,就像作者在他的例子中所做的那樣,我的程序退出終端 - 它不打印「哎呀!」它也不會繼續運行(循環)。
我使用完全相同的代碼,這裏給出的,書上的網站:
作爲說明:至少在標準C++中(在信號處理程序中調用printf)是未定義的行爲 – MikeMB