Sobes.tech
Junior — Middle

Paaiškinkite, kas yra signalai Linux operacinėje sistemoje ir kaip su jais dirbti

sobes.tech AI

Atsakymas iš AI

Linux'e signalai yra mechanizmas asinchroniniam procesų pranešimui apie įvykius (pavyzdžiui, pertraukimą, vaikų proceso užbaigimą, laiko limitą).

Svarbūs punktai:

  • Signalai turi skaitinius identifikatorius (pavyzdžiui, SIGINT, SIGTERM).
  • Procesas gali apdoroti signalą naudodamas signalo tvarkyklę arba jį ignoruoti.
  • Jei signalas nėra apdorojamas, taikoma numatytoji veiksmo (pavyzdžiui, proceso užbaigimas).

C kalboje SIGINT (Ctrl+C) signalo apdorojimo pavyzdys:

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void handler(int signum) {
    printf("Gautas signalas %d, užbaigimas...\n", signum);
    _exit(0);
}

int main() {
    signal(SIGINT, handler);
    while(1) {
        printf("Dirbame...\n");
        sleep(1);
    }
    return 0;
}

Shell'e signalus galima siųsti naudojant kill komandą su PID, pavyzdžiui, kill -SIGTERM 1234.