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'。这里真的需要*来使用信号吗?为什么不简单地调用一个函数? –