Я знаю, как ловушкой один сигналкак улавливать более одного сигнала в C++?
signal(SIGINT, handler);
но есть способ поймать больше, чем один в то же самое время?
Я попытался signal (SIGINT or SIGQUIT, handler)
, но его не работает.
Я знаю, как ловушкой один сигналкак улавливать более одного сигнала в C++?
signal(SIGINT, handler);
но есть способ поймать больше, чем один в то же самое время?
Я попытался signal (SIGINT or SIGQUIT, handler)
, но его не работает.
Что касается сигнала(), он является устаревшим
можно зарегистрировать для нескольких сигналов с помощью 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)
{
}
}
В качестве альтернативы вы можете передавать разные функции каждому вызову 'signal', который может быть немного чище, чем проверка аргумента' signo', если в коде обработчика нет никакого совпадения. –
согласен, но это зависит от использования – basav
Просто вызовите «сигнал» снова, один раз для каждого сигнала, который вы хотите обработать. –
Вы имеете в виду регистрацию для нескольких сигналов ?? – basav