Back to questions
Касперский
Junior — Middle
105
Возможно ли предотвратить обработку сигналов в программных приложениях?
Companies where asked
Answer from AI
sobes.tech AI
В программных приложениях на C/C++ можно предотвратить обработку сигналов, установив для них действие SIG_IGN (игнорирование). Это означает, что при получении сигнала программа не будет выполнять никакой обработчик и просто проигнорирует сигнал.
Пример игнорирования сигнала SIGINT (обычно Ctrl+C):
#include <signal.h>
#include <stdio.h>
int main() {
// Игнорируем сигнал SIGINT
signal(SIGINT, SIG_IGN);
printf("Попытка прервать программу с Ctrl+C будет проигнорирована.\n");
while(1) {
// бесконечный цикл
}
return 0;
}
Однако полностью "предотвратить" обработку сигналов нельзя, так как некоторые сигналы (например, SIGKILL и SIGSTOP) нельзя перехватить или игнорировать. Для остальных сигналов можно либо установить обработчик, либо игнорировать их.