我知道如何捕获一个信号
signal( SIGINT, handler );
但是有没有办法同时捕获多个?
我尝试了signal (SIGINT or SIGQUIT, handler)
但它不起作用。
答案 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)
{
}
}