6. Semnalele

Un semnal este, de fapt, o notificare către un proces că ceva s-a întâmplat.

De ce există aceste semnale?

Reprezintă mesaje de întrerupere la nivel software și au o mulțime de întrebuințări:

  • Un utilizator poate tasta unul dintre caracterele speciale (Ctrl-C) or (Ctrl-Z) pentru a opri, întrerupe sau suspenda procesele;
  • Pot apărea probleme hardware și de aceea kernelul va vrea să anunțe procesul;
  • Pot apărea probleme software și de aceea kernelul va vrea să anunțe procesul;
  • Acestea sunt metode de bază prin care procesele pot comunica.

Semnalele proceselor

În momentul în care un semnal este generat de un oarecare eveniment, acesta este mai apoi trimis către un proces și va rămâne în așteptare până când este trimis / livrat. Totuși, procesele au măști de semnal și pot seta ca trimiterea semnalului să fie blocată. Atunci când un semnal este livrat, un proces poate face mai multe lucruri:

  • Ignorarea semnalului;
  • “Interceptarea” semnalului și executarea unei rutine specifice;
  • Procesul poate fi oprit, practic inversul unui apel de sistem de ieșire;
  • Blocarea semnalului, în funcție de masca acestuia.

Semnale obișnuite

Fiecare semnal este definit cu ajutorul unor numere întregi și a unor nume simbolice care sunt de forma SIGxxx. Unele dintre cele mai obișnuite semnale sunt:

  • SIGHUP or HUP or 1: Închidere
  • SIGINT or INT or 2: Întrerupere
  • SIGKILL or KILL or 9: Oprire
  • SIGSEGV or SEGV or 11: Eroare de segmntare
  • SIGTERM or TERM or 15: Oprire software
  • SIGSTOP or STOP: Stop

Numerele pot varia în funcție de semnal, așa că, de regulă, se folosește denumirea lor.

Unele dintre semnale nu sunt blocabile, un exemplu fiind semnalul SIGKILL. Semnalul KILL distruge procesul.


Exerciții

Nici un exercițiu pentru această lecție.


Lasă un răspuns

Adresa ta de email nu va fi publicată.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.