我知道如何捕捉一个信号

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

   }
}

关于c++ - 如何在C++中捕获多个信号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32940770/

10-15 01:28