- 论坛徽章:
- 0
|
写了一个很简单的main函数,调用signal函数,可以正确接收到信号。
但是在一个多线程服务的主函数中,同样的方法使用signal函数却收不到signal信号。
网上搜了一下,说是多线程的要用sigaction函数,改用这个函数仍然不收不到信号。
int sig_status = 0;
void signal_handler(int sig_num) {
std::cout << "in signal_handler" << std::endl;
sig_status = 1;
LOG(INFO) << "receive signal: " << sig_num;
}
int main(int argc, char** argv) {
// handle signal SIGUSR1
//method signal
// signal(SIGUSR1, signal_handler);
//method sigaction
struct sigaction act;
act.sa_handler = signal_handler;
act.sa_flags = SA_RESTART;
sigaction(SIGUSR1, &act, NULL);
....
thread.Start();
这是为什么呢?? |
|