我試圖讓我的程序忽略Ctrl + C在unix中,這似乎工作,問題是它不斷寫入「語法錯誤」。下面是代碼sigset:忽略Unix中的ctrl-c
extern "C" void ignore(int sig)
{
fprintf(stderr, "\n"); // Print a new line
// This function does nothing except ignore ctrl-c
}
int main()
{
// For ctrl-c
sigset(SIGINT, ignore);
while (1) {
getUserInput();
}
return 0;
}
每次我打按Ctrl +ç它通過getUserInput再次運行,這是預期的行爲,但它寫道:「語法錯誤」的可能。我檢查並執行「忽略」函數,一旦它被執行,然後打印錯誤信息,我不知道爲什麼。
有沒有人有任何線索?
非常感謝你,
Jary
如果這是C,爲什麼'extern「C」'? – alternative 2010-09-07 22:29:56
請發佈一個完整的,自包含的程序,可以編譯。我在這裏看到至少有兩件事可能是你的問題,但如果沒有完整的測試用例,我不能確定。 – zwol 2010-09-07 22:33:16
如果這是新代碼,你可能想使用'sigaction'; 'sigset'是POSIX之前版本,不推薦使用 – 2010-09-07 22:35:27