2
我正在構建一個處理從RS232端口收到的信號的算法。基本思想是從RS232接收信號,然後用相機抓取圖像。連續信號手柄
現在讓我們忽略照相機和RS232。我的短程序應該進入while循環,並請求「cin」命令。如果command == 'b'
,應該提高信號並激活signal_handler()
功能。現在它工作正常。
我想要做的是改變程序重新回到while循環並繼續。我的程序在中斷後終止。
當我刪除exit(signum)
時,程序返回while循環並詢問命令。如果我再次輸入'b'程序結束。
我哪裏錯了?錯誤的信號或整個方法?
謝謝!
void signalHandler(int signum) {
cout << "Interrupt signal (" << signum << ") received.\n";
}
int main(){
char Command = 'a';
signal(SIGINT, signalHandler);
while (true){
cout << "Command: ";
cin >> Command;
if (Command == 'b'){
raise(SIGINT);
}
}
return 0;
}
爲什麼使用SIGINT(信號中斷),而不是兩個用戶信號SIGUSR1或SIGUSR2中的一個? –
因爲我沒有聽說過他們,你能舉個例子,我應該如何實施他們? – czmafi00
只是一樣,但用例如改爲'SIGUSR1'。這裏真的需要*來使用信號嗎?爲什麼不簡單地調用一個函數? –