.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2000 Andries Brouwer .\" and Copyright (c) 2007 Michael Kerrisk .\" and Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk .\" .\" based on work by Rik Faith .\" and Mike Battersby . .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified 2004-11-19, mtk: .\" added pointer to sigaction.2 for details of ignoring SIGCHLD .\" 2007-06-03, mtk: strengthened portability warning, and rewrote .\" various sections. .\" 2008-07-11, mtk: rewrote and expanded portability discussion. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH signal 2 "30 martie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME signal \- gestionarea semnalelor ANSI C .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBtypedef void (*sighandler_t)(int);\fP .PP \fBsighandler_t signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIhandler\fP\fB);\fP .fi .SH DESCRIERE \fBATENȚIE\fP: comportamentul \fBsignal\fP() variază între versiunile UNIX și a variat, de asemenea, de\-a lungul timpului, între diferitele versiuni de Linux. \fBEvitați utilizarea sa\fP: utilizați în schimb \fBsigaction\fP(2). A se vedea secțiunea \fIPortabilitate\fP de mai jos. .PP \fBsignal\fP() stabilește dispoziția semnalului \fIsignum\fP la \fIhandler\fP, care este fie \fBSIG_IGN\fP, \fBSIG_DFL\fP, fie adresa unei funcții definite de programator (un „gestionar de semnal”). .PP Dacă semnalul \fIsignum\fP este transmis procesului, atunci apare una dintre următoarele situații: .TP 3 * Dacă dispoziția este stabilită la \fBSIG_IGN\fP, atunci semnalul este ignorat. .TP * Dacă dispoziția este stabilită la \fBSIG_DFL\fP, atunci are loc acțiunea implicită asociată cu semnalul (a se vedea \fBsignal\fP(7)). .TP * Dacă dispoziția este stabilită la o funcție, atunci mai întâi fie dispoziția este restabilită la \fBSIG_DFL\fP, fie semnalul este blocat (a se vedea secțiunea \fIPortabilitate\fP de mai jos), iar apoi se apelează \fIhandler\fP cu argumentul \fIsignum\fP. În cazul în care invocarea gestionarului a cauzat blocarea semnalului, atunci semnalul se deblochează la returnarea gestionarului. .PP Semnalele \fBSIGKILL\fP și \fBSIGSTOP\fP nu pot fi capturate sau ignorate. .SH "VALOAREA RETURNATĂ" \fBsignal\fP() returnează valoarea anterioară a gestionarului de semnal. În caz de eșec, returnează \fBSIG_ERR\fP, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEINVAL\fP \fIsignum\fP nu este valid. .SH VERSIUNI .\" libc4 and libc5 define .\" .IR SignalHandler ; Utilizarea lui \fIsighandler_t\fP este o extensie GNU, expusă dacă este definită \fB_GNU_SOURCE\fP; glibc definește, de asemenea, \fIsig_t\fP (derivat din BSD) dacă este definită \fB_BSD_SOURCE\fP (glibc 2.19 și versiunile anterioare) sau \fB_DEFAULT_SOURCE\fP (glibc 2.19 și versiunile ulterioare). Fără utilizarea unui astfel de tip, declarația lui \fBsignal\fP() este cu atât mai greu de citit: .PP .in +4n .EX \fBvoid ( *\fP\fIsignal\fP\fB(int \fP\fIsignum\fP\fB, void (*\fP\fIhandler\fP\fB)(int)) ) (int);\fP .EE .in .SS Portabilitate Singura utilizare portabilă a \fBsignal\fP() este de a stabili dispoziția unui semnal la \fBSIG_DFL\fP sau \fBSIG_IGN\fP. Semantica atunci când se utilizează \fBsignal\fP() pentru a stabili un gestionar de semnal variază de la un sistem la altul (iar POSIX.1 permite în mod explicit această variație); \fBnu o utilizați în acest scop.\fP. .PP POSIX.1 a rezolvat problema portabilității prin specificarea \fBsigaction\fP(2), care oferă un control explicit al semanticii atunci când este invocat un gestionar de semnal; utilizați această interfață în loc de \fBsignal\fP(). .SH STANDARDE C11, POSIX.1\-2008. .SH ISTORIC C89, POSIX.1\-2001. .PP În sistemele UNIX originale, atunci când un gestionar stabilit cu ajutorul \fBsignal\fP() era invocat de livrarea unui semnal, dispoziția semnalului era restabilită la \fBSIG_DFL\fP, iar sistemul nu bloca livrarea altor instanțe ale semnalului. Acest lucru este echivalent cu apelarea \fBsigaction\fP(2) cu următoarele fanioane: .PP .in +4n .EX sa.sa_flags = SA_RESETHAND | SA_NODEFER; .EE .in .PP System V oferă, de asemenea, această semantică pentru \fBsignal\fP(). Acest lucru era rău deoarece semnalul putea fi transmis din nou înainte ca operatorul să aibă șansa de a se restabili. În plus, transmiterea rapidă a aceluiași semnal ar putea duce la invocări recursive ale gestionarului. .PP BSD a îmbunătățit această situație, dar, din păcate, a schimbat și semantica interfeței \fBsignal\fP() existente. Pe BSD, atunci când este invocat un gestionar de semnal, dispoziția semnalului nu este restabilită, iar alte instanțe ale semnalului sunt blocate în timp ce gestionarul este în curs de execuție. În plus, anumite apeluri de sistem cu blocare sunt repornite automat dacă sunt întrerupte de un gestionar de semnal (a se vedea \fBsignal\fP(7)). Semantica BSD este echivalentă cu apelarea \fBsigaction\fP(2) cu următoarele fanioane: .PP .in +4n .EX sa.sa_flags = SA_RESTART; .EE .in .PP Situația în Linux este următoarea: .IP \[bu] 3 Apelul de sistem \fBsignal\fP() al nucleului asigură semantica System V. .IP \[bu] .\" .\" System V semantics are also provided if one uses the separate .\" .BR sysv_signal (3) .\" function. .\" .IP * .\" The .\" .BR signal () .\" function in Linux libc4 and libc5 provide System\ V semantics. .\" If one on a libc5 system includes .\" .I .\" instead of .\" .IR , .\" then .\" .BR signal () .\" provides BSD semantics. În mod implicit, în glibc 2 și versiunile ulterioare, funcția de învăluire \fBsignal\fP() nu invocă apelul de sistem al nucleului. În schimb, aceasta apelează \fBsigaction\fP(2) folosind fanioane care furnizează semantica BSD. Acest comportament implicit este furnizat atâta timp cât este definită o macro de testare a funcției corespunzătoare: \fB_BSD_SOURCE\fP pe glibc 2.19 și versiunile anterioare sau \fB_DEFAULT_SOURCE\fP în glibc 2.19 și versiunile ulterioare; (în mod implicit, aceste macro sunt definite; consultați \fBfeature_test_macros\fP(7) pentru detalii). Dacă o astfel de macro de testare a caracteristicilor nu este definită, atunci \fBsignal\fP() oferă semantica System V. .SH NOTE Efectele lui \fBsignal\fP() într\-un proces cu mai multe fire de execuție sunt nespecificate. .PP În conformitate cu POSIX, comportamentul unui proces este nedefinit după ce acesta ignoră un semnal \fBSIGFPE\fP, \fBSIGILL\fP sau \fBSIGSEGV\fP care nu a fost generat de \fBkill\fP(2) sau \fBraise\fP(3). Divizarea unui număr întreg cu zero are un rezultat nedefinit. Pe unele arhitecturi, aceasta va genera un semnal \fBSIGFPE\fP; (de asemenea, împărțirea celui mai negativ număr întreg cu \-1 poate genera \fBSIGFPE\fP). Ignorarea acestui semnal ar putea duce la o buclă fără sfârșit. .PP A se vedea \fBsigaction\fP(2) pentru detalii despre ce se întâmplă atunci când dispoziția \fBSIGCHLD\fP este stabilită la \fBSIG_IGN\fP. .PP A se vedea \fBsignal\-safety\fP(7) pentru o listă a funcțiilor async\-signal\-safe care pot fi apelate în siguranță din interiorul unui gestionar de semnal. .SH "CONSULTAȚI ȘI" \fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2), \fBbsd_signal\fP(3), \fBkillpg\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3), \fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3), \fBsignal\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .