Junior — Middle
Обяснете какви са сигналите в операционната система Linux и как да работите с тях
sobes.tech AI
Отговор от AI
В Linux сигналите са механизъм за асинхронно уведомяване на процесите за събития (например, прекъсване, завършване на дъщерен процес, таймаут).
Основни моменти:
- Сигналите имат числови идентификатори (например, SIGINT, SIGTERM).
- Процес може да обработи сигнал чрез обработчик на сигнали или да го игнорира.
- Ако сигналът не бъде обработен, се прилага стандартното действие (например, завършване на процеса).
Пример за обработка на сигнал SIGINT (Ctrl+C) на C:
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void handler(int signum) {
printf("Получен сигнал %d, приключване...\n", signum);
_exit(0);
}
int main() {
signal(SIGINT, handler);
while(1) {
printf("Работим...\n");
sleep(1);
}
return 0;
}
В shell, сигнали могат да се изпращат с командата kill по PID, например kill -SIGTERM 1234.