我的main()
中有一个循环,它将一直持续到获得停止信号(ctrl z)或退出(ctrl)。
循环:
signal(SIGQUIT, signalHandler);
signal(SIGTSTP, signalHandler);
while (1)
sleep(1);
我想要做的是当我收到一个ctrl z信号时,除了打印出“Stop received”之外,我希望我的程序实际停止。 当前信号处理程序功能:
void signalHandler(int signum) {
if (signum == SIGQUIT)
cout << "Quit recieved" << endl;
break;
else if (signum == SIGTSTP)
cout << "Stop recieved" << endl;
break;
else {
cout << "SOMETHING'S WRONG" << endl;
exit(-1);
}
}
我需要添加什么才能让我这样做(这是收到停止信号并停止我的程序)?到目前为止我所尝试的是将raise(SIGTSTP)
放在我的signalHandler
函数中,但这使我处于无限循环中。我也尝试创建一个volatile sig_atomic_t
,将其初始化为0,但一旦收到信号(它保持为0),它就永远不会为我更新。