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

how to trap more than one signal in c++?

我知道如何捕获一个信号

signal( SIGINT, handler );

但是有没有办法同时困住一个以上的人呢?

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

但它不起作用。

至于 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)
   {

   }
}