Junior — Middle
Wyjaśnij, czym są sygnały w systemie operacyjnym Linux i jak z nimi pracować
sobes.tech AI
Odpowiedź od AI
W Linuxie sygnały to mechanizm asynchronicznego powiadamiania procesów o zdarzeniach (np. przerwanie, zakończenie procesu potomnego, timeout).
Główne punkty:
- Sygnały mają identyfikatory numeryczne (np. SIGINT, SIGTERM).
- Proces może obsłużyć sygnał za pomocą obsługi sygnałów lub go zignorować.
- Jeśli sygnał nie jest obsłużony, stosuje się domyślne działanie (np. zakończenie procesu).
Przykład obsługi sygnału SIGINT (Ctrl+C) w C:
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void handler(int signum) {
printf("Odebrano sygnał %d, kończę pracę\n", signum);
_exit(0);
}
int main() {
signal(SIGINT, handler);
while(1) {
printf("Pracujemy...\n");
sleep(1);
}
return 0;
}
W shellu można wysłać sygnały poleceniem kill z PID, np. kill -SIGTERM 1234.