Вопрос проверяет знание сигналов Linux, используемых для управления процессами, что важно для системного администрирования и отладки.
Сигналы — это механизм межпроцессного взаимодействия в Linux, позволяющий отправлять процессам уведомления о событиях. Они используются для управления процессами, обработки ошибок и синхронизации. Каждый сигнал имеет уникальный номер и предопределённое действие (завершение, остановка, игнорирование и т.д.).
# Отправить SIGTERM процессу с PID 1234
kill 1234
# Отправить SIGKILL
kill -9 1234
# Отправить SIGUSR1
kill -USR1 1234#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void handler(int sig) {
printf("Получен сигнал %d\n", sig);
}
int main() {
signal(SIGINT, handler); // Перехват Ctrl+C
while(1) {
sleep(1);
}
return 0;
}В этом примере программа перехватывает SIGINT и выводит сообщение, не завершаясь.
Знание сигналов необходимо для управления процессами, написания надёжных демонов и отладки. Используйте SIGTERM для вежливого завершения, SIGKILL — только в крайних случаях.