Semnal (computer)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Un semnal , în informatică , este un impuls asincron transmis de la un proces la altul și este unul dintre instrumentele de comunicare dintre procese . De obicei, nu sunt transmise date împreună cu semnalul, spre deosebire de ceea ce se întâmplă, în general, pentru evenimentele din programarea evenimentelor .

In Unix , Unix- operare sisteme și în general cele care urmează POSIX caietul de sarcini, există o metodologie uniformă folosind semnale, cum ar fi utilizarea kill () apelul de signal() sigaction() sistem pentru a trimite semnale, sau folosind signal() și sigaction() pentru m definirea funcțiilor de manipulare a semnalului. În aceste sisteme, precum și din alte procese, semnalele sunt trimise direct de către nucleu pentru a notifica apariția unor condiții anormale (de exemplu, SIGSEGV, SIGBUS sau chiar SIGURG)

Specificația unică UNIX specifică următoarele semnale pentru <signal.h> :

Nume Sens
SIGABRT Încetarea anormală (avort) a procesului.
SIGALRM Semnal ridicat de alarm() .
SIGBUS Eroare de autobuz: „Încercarea de a accesa o porțiune nedefinită a obiectului de memorie” („acces la porțiunea nedefinită a obiectului de memorie” [1] ).
SIGCHLD Procesul secundar a fost încheiat sau oprit (sau repornit [2] ).
SIGCONT Procesul poate continua, dacă a fost oprit.
SIGFPE Excepție într-un număr în virgulă mobilă : „operație aritmetică eronată” [1] ).
PREZENTARE Hangup : În general ridicat când un terminal este închis.
SIGILIU Educație ilegală.
SIGINT Întreruperea procesului.
SIGKILL Încetarea imediată ( uciderea ) procesului. Acest semnal nu poate fi ignorat, iar procesul de recepție nu poate efectua operațiuni de închidere „soft”.
SIGPIPE Dacă un proces care ar trebui să fie citit dintr-o conductă se termină în mod neașteptat, acest semnal este trimis către programul care ar trebui să scrie în conducta în cauză.
SIGQUIT Întreruperea procesului.
SIGSEGV Programul a generat o eroare de segmentare .
SIGSTOP Opriți temporar executarea procesului: acest semnal nu poate fi ignorat.
SIGTERM Încetarea programului; comanda kill trimite acest semnal dacă nu se specifică altfel.
SIGTSTP Opriți temporar procesul de rulare.
SIGTTIN Un proces care rulează în fundal încearcă să citească de pe terminal ( în ).
SIGTTOU Un proces care rulează în fundal încearcă să scrie pe terminal ( out ).
SIGUSR1 Definit de utilizator.
SIGUSR2 Definit de utilizator.
SIGPOLL O operațiune de intrare / ieșire a fost posibilă, permite interogarea [2] .
SIGPROF O numărătoare inversă setată pentru proces este terminată: măsoară timpul procesorului utilizat de proces și de sistem pentru a efectua acțiuni instruite de procesul însuși [2] .
SIGSYS Apel sistem incorect [2] .
SIGTRAP Executarea procesului a atins un punct de întrerupere ( capcană ), depanatorul poate informa dezvoltatorul despre acest lucru [2] .
DOMNUL Există date urgente disponibile pentru proces pe o priză .
SIGVTALRM O numărătoare inversă setată pentru proces s-a încheiat: măsoară timpul „virtual” consumat doar de proces [2] („temporizatorul virtual a expirat” [1] ).
SIGXCPU Timpul procesorului epuizat disponibil pentru proces [2] .
SIGXFSZ S- a depășit dimensiunea maximă a fișierului permisă pentru lucrare [2] .

Condiții

Următoarele condiții pot genera un semnal:

  • Când un utilizator tastează anumite combinații de taste într-un terminal, se generează un semnal. De exemplu, atunci când un proces este forțat să anuleze cu CTRL + C (SIGINT în general).
  • Unele excepții hardware pot genera semnale: împărțiți la zero, acces nevalid la memorie și așa mai departe. Programatorii începători suferă adesea consecințele semnalului SIGSEGV din cauza pointerelor neinițializate sau dereferențiate atunci când indică spre NULL.
  • Procesele pot trimite semnale către ei înșiși folosind apelul de sistem kill() , dacă permisiunile le permit.
  • Nucleul poate genera semnale pentru a informa procesele atunci când se întâmplă ceva anume. De exemplu, un SIGPIPE ar fi ridicat dacă un proces ar încerca să scrie pe o conductă închisă prin procesul care ar trebui să-l citească.

Semnalele pot provoca, uneori, terminarea unui apel sistem în curs.

Notă

  1. ^ a b c Specificație unică UNIX
  2. ^ a b c d e f g h X / Extindere interfețe sistem deschise

Elemente conexe

linkuri externe

  • (RO) Baris Simsek,Semnale (PDF), pe enderunix.org, 2005. Adus de 02-06-2008. - Semnalele POSIX UNIX și fiabile
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT