如何在c ++中捕获多个信号?

时间:2015-10-05 03:16:25

标签: c++ system

我知道如何捕获一个信号

signal( SIGINT, handler );

但是有没有办法同时捕获多个?

我尝试了signal (SIGINT or SIGQUIT, handler)

但它不起作用。

1 个答案:

答案 0 :(得分:3)

至于signal(),它已被弃用

您可以使用sigaction注册多个信号。

struct sigaction act;
act.sa_handler = sighandler;
sigaction(SIGINT,  &act, 0);
sigaction(SIGTERM, &act, 0);

在处理程序中,您将获得一个可用于区分它们的标志。

void sighandler(int signo)
{
   if (signo == SIGTERM || signo == SIGINT)
   {

   }
}