Junior — Middle
Vysvetlite, čo sú signály v operačnom systéme Linux a ako s nimi pracovať
sobes.tech AI
Odpoveď od AI
V Linuxe sú signály mechanizmom asynchrónneho upozorňovania procesov o udalostiach (napríklad, prerušenie, ukončenie dcérskeho procesu, timeout).
Hlavné body:
- Signály majú číselné identifikátory (napríklad, SIGINT, SIGTERM).
- Proces môže spracovať signál pomocou spracovateľa signálov alebo ho ignorovať.
- Ak signál nie je spracovaný, aplikuje sa predvolaná akcia (napríklad, ukončenie procesu).
Príklad spracovania signálu SIGINT (Ctrl+C) v C:
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void handler(int signum) {
printf("Prijatý signál %d, ukončujem...\n", signum);
_exit(0);
}
int main() {
signal(SIGINT, handler);
while(1) {
printf("Pracujeme...\n");
sleep(1);
}
return 0;
}
V shell, signály je možné poslať príkazom kill s PID, napríklad kill -SIGTERM 1234.