Provided by: manpages-ro-dev_4.28.0-2_all 

NUME
errno - numărul ultimei erori
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <errno.h>
DESCRIERE
Fișierul de antet <errno.h> definește variabila întreagă errno, care este configurată de apelurile
sistemului și de unele funcții de bibliotecă în cazul unei erori pentru a indica ce nu a mers bine.
errno
Valoarea din errno este semnificativă numai atunci când valoarea de returnare a apelului a indicat o
eroare (de exemplu, -1 de la majoritatea apelurilor sistemului; -1 sau NULL de la majoritatea funcțiilor
de bibliotecă); o funcție care reușește este autorizată să modifice errno. Valoarea lui errno nu este
niciodată stabilită la zero de către niciun apel de sistem sau funcție de bibliotecă.
Pentru unele apeluri de sistem și funcții de bibliotecă (de exemplu, getpriority(2)), -1 este un rezultat
valid în caz de succes. În astfel de cazuri, o returnare de succes poate fi diferențiată de o returnare
de eroare prin configurarea errno la zero înainte de apel și apoi, dacă apelul returnează o stare care
indică faptul că este posibil să fi avut loc o eroare, verificând pentru a vedea dacă errno are o valoare
diferită de zero.
errno este definit de standardul ISO C ca fiind o lvaloare modificabilă de tip int și nu trebuie să fie
declarată explicit; errno poate fi un macro. errno este „local într-un fir”l; definirea sa într-un fir nu
afectează valoarea sa în niciun alt fir.
Numere și nume de erori
Numerele de eroare valide sunt toate numere pozitive. Fișierul de antet <errno.h> definește nume
simbolice pentru fiecare dintre numerele de eroare posibile care pot apărea în errno.
Toate numele erorilor specificate de POSIX.1 trebuie să aibă valori distincte, cu excepția EAGAIN și
EWOULDBLOCK, care pot fi aceleași. În Linux, acestea două au aceeași valoare pe toate arhitecturile.
Numerele de eroare care corespund fiecărui nume simbolic variază de la un sistem UNIX la altul și chiar
de la o arhitectură la alta în Linux. Prin urmare, valorile numerice nu sunt incluse ca parte a listei de
nume de erori de mai jos. Funcțiile perror(3) și strerror(3) pot fi utilizate pentru a converti aceste
nume în mesaje de eroare textuale corespunzătoare.
În orice sistem Linux particular, se poate obține o listă a tuturor numelor simbolice de erori și a
numerelor de erori corespunzătoare folosind comanda errno(1) (parte a pachetului moreutils):
$ errno -l
EPERM 1 Operația nu este permisă
ENOENT 2 Nu există un astfel de fișier sau director
ESRCH 3 Nu există un astfel de proces
EINTR 4 Apel de sistem întrerupt
EIO 5 Eroare de intrare/ieșire
...
Comanda errno(1) poate fi, de asemenea, utilizată pentru a căuta numere și nume de erori individuale și
pentru a căuta erori utilizând șiruri de caractere din descrierea erorii, ca în exemplele următoare:
$ errno 2
ENOENT 2 Nu există un astfel de fișier sau director
$ errno ESRCH
ESRCH 3 Nu există un astfel de proces
$ errno -s permission
EACCES 13 Permisiune refuzată
Lista numelor de erori
În lista de nume simbolice ale erorilor de mai jos, diferite nume sunt marcate după cum urmează:
POSIX.1-2001
Numele este definit de POSIX.1-2001 și este definit în versiunile ulterioare ale POSIX.1, dacă nu
se indică altfel.
POSIX.1-2008
Numele este definit în POSIX.1-2008, dar nu era prezent în standardele POSIX.1 anterioare.
C99 Numele este definit de C99.
Mai jos este o listă a numelor simbolice de erori care sunt definite în Linux:
E2BIG Lista de argumente este prea lungă (POSIX.1-2001).
EACCES Permisiune refuzată (POSIX.1-2001).
EADDRINUSE Adresa este deja utilizată (POSIX.1-2001).
EADDRNOTAVAIL Adresa nu este disponibilă (POSIX.1-2001).
EAFNOSUPPORT Familia de adrese nu este acceptată (POSIX.1-2001).
EAGAIN Resursă temporar indisponibilă (poate fi aceeași valoare ca EWOULDBLOCK) (POSIX.1-2001).
EALREADY Conexiunea este deja în curs (POSIX.1-2001).
EBADE Schimb nevalid.
EBADF Descriptor de fișier incorect (POSIX.1-2001).
EBADFD Descriptor de fișier în stare proastă.
EBADMSG Mesaj incorect (POSIX.1-2001).
EBADR Descriptor de solicitare nevalid.
EBADRQC Cod de solicitare nevalid.
EBADSLT Slot nevalid.
EBUSY Dispozitiv sau resursă ocupată (POSIX.1-2001).
ECANCELED Operație anulată (POSIX.1-2001).
ECHILD Nu există procese-copil (POSIX.1-2001).
ECHRNG Numărul canalului este în afara intervalului.
ECOMM Eroare de comunicare la trimitere.
ECONNABORTED Conexiune întreruptă (POSIX.1-2001).
ECONNREFUSED Conexiune refuzată (POSIX.1-2001).
ECONNRESET Conexiune reinițiată (POSIX.1-2001).
EDEADLK Blocare de resursă evitată (POSIX.1-2001).
EDEADLOCK Pe majoritatea arhitecturilor, un sinonim pentru EDEADLK. Pe unele arhitecturi (de
exemplu, Linux MIPS, PowerPC, SPARC), acesta este un cod de eroare separat „Eroare de
blocare a blocajului fișierului”.
EDESTADDRREQ Adresă de destinație necesară (POSIX.1-2001).
EDOM Argument matematic în afara domeniului funcției (POSIX.1, C99).
EDQUOT Cota de disc a fost depășită (POSIX.1-2001).
EEXIST Fișierul există (POSIX.1-2001).
EFAULT Adresă greșită (POSIX.1-2001).
EFBIG Fișier prea mare (POSIX.1-2001).
EHOSTDOWN Gazda este deconectată.
EHOSTUNREACH Gazda este inaccesibilă (POSIX.1-2001).
EHWPOISON Pagina de memorie are o eroare hardware.
EIDRM Identificator eliminat (POSIX.1-2001).
EILSEQ Caracter multioctet sau lat nevalid sau incomplet (POSIX.1, C99).
Textul afișat aici este descrierea erorii glibc; în POSIX.1, această eroare este descrisă
ca „Secvență ilegală de octeți”.
EINPROGRESS Operațiune în curs de desfășurare (POSIX.1-2001).
EINTR Apel de funcție întrerupt (POSIX.1-2001); a se vedea signal(7).
EINVAL Argument nevalid (POSIX.1-2001).
EIO Eroare de intrare/ieșire (POSIX.1-2001).
EISCONN Soclul este conectat (POSIX.1-2001).
EISDIR Este un director (POSIX.1-2001).
EISNAM Este un fișier de tipul numit.
EKEYEXPIRED Cheia a expirat.
EKEYREJECTED Cheia a fost respinsă de către serviciu.
EKEYREVOKED Cheia a fost revocată.
EL2HLT Nivelul 2 oprit.
EL2NSYNC Nivelul 2 nu este sincronizat.
EL3HLT Nivelul 3 oprit.
EL3RST Nivelul 3 reinițiat.
ELIBACC Nu se poate accesa o bibliotecă partajată necesară.
ELIBBAD Se accesează o bibliotecă partajată coruptă.
ELIBMAX Se încearcă vincularea la prea multe biblioteci partajate.
ELIBSCN Secțiunea .lib din a.out este coruptă
ELIBEXEC Nu se poate executa direct o bibliotecă partajată.
ELNRNG Numărul de legătură este în afara intervalului.
ELOOP Prea multe niveluri de legături simbolice (POSIX.1-2001).
EMEDIUMTYPE Tip de mediu(suport) greșit.
EMFILE Prea multe fișiere deschise (POSIX.1-2001). Cauzată frecvent de depășirea limitei de
resurse RLIMIT_NOFILE descrisă în getrlimit(2). Poate fi cauzată și de depășirea limitei
specificate în /proc/sys/fs/nr_open.
EMLINK Prea multe legături (POSIX.1-2001).
EMSGSIZE Mesajul este prea lung (POSIX.1-2001).
EMULTIHOP Încercare de salturi multiple „multihop” (POSIX.1-2001).
ENAMETOOLONG Numele fișierului este prea lung (POSIX.1-2001).
ENETDOWN Rețeaua este căzută(dezactivată) (POSIX.1-2001).
ENETRESET Conexiune întreruptă de rețea (POSIX.1-2001).
ENETUNREACH Rețea inaccesibilă (POSIX.1-2001).
ENFILE Prea multe fișiere deschise în sistem (POSIX.1-2001). În Linux, acesta este probabil un
rezultat al atingerii limitei /proc/sys/fs/file-max (a se vedea proc(5)).
ENOANO Nici un anod -- NT.: traducerea literală; de asemenea „anode” poate să însemne o vaiație
de nod-i, sau nod-alocat.
ENOBUFS Nu există spațiu tampon disponibil [POSIX.1 (opțiunea XSI STREAMS)].
ENODATA Atributul numit nu există sau procesul nu are acces la acest atribut; a se vedea
xattr(7).
În POSIX.1-2001 (opțiunea XSI STREAMS), această eroare a fost descrisă ca „Niciun mesaj
nu este disponibil în coada de citire a fluxului (STREAM)”.
ENODEV Nu există un astfel de dispozitiv (POSIX.1-2001).
ENOENT Nu există un astfel de fișier sau director (POSIX.1-2001).
De obicei, această eroare apare atunci când un nume de rută specificat nu există, sau una
dintre componentele din prefixul de director al unui nume de rută nu există, sau numele
de rută specificat este o legătură simbolică întreruptă(fără țintă).
ENOEXEC Eroare de format de execuție (POSIX.1-2001).
ENOKEY Cheia necesară nu este disponibilă.
ENOLCK Nu există blocaje disponibile (POSIX.1-2001).
ENOLINK Legătura a fost întreruptă (POSIX.1-2001).
ENOMEDIUM Nu a fost găsit niciun mediu(suport).
ENOMEM Nu este suficient spațiu/nu se poate aloca memorie (POSIX.1-2001).
ENOMSG Niciun mesaj de tipul dorit (POSIX.1-2001).
ENONET Mașina nu este în rețea.
ENOPKG Pachetul nu este instalat.
ENOPROTOOPT Protocolul nu este disponibil (POSIX.1-2001).
ENOSPC Nu mai există spațiu liber pe dispozitiv (POSIX.1-2001).
ENOSR Nu există resurse STREAM [POSIX.1 (XSI STREAMS option)].
ENOSTR Nu este un flux(STREAM) [POSIX.1 (XSI STREAMS option)].
ENOSYS Funcție neimplementată (POSIX.1-2001).
ENOTBLK Este necesar un dispozitiv de blocuri.
ENOTCONN Soclul nu este conectat (POSIX.1-2001).
ENOTDIR Nu este un director (POSIX.1-2001).
ENOTEMPTY Directorul nu este gol (POSIX.1-2001).
ENOTRECOVERABLE Stare nerecuperabilă (POSIX.1-2008).
ENOTSOCK Nu este un soclu (POSIX.1-2001).
ENOTSUP Operație neacceptată (POSIX.1-2001).
ENOTTY Operație de control de In/Ieș nepotrivită (POSIX.1-2001).
ENOTUNIQ Numele nu este unic în rețea.
ENXIO Nu există un astfel de dispozitiv sau adresă (POSIX.1-2001).
EOPNOTSUPP Operația nu este acceptată pe soclu (POSIX.1-2001).
(ENOTSUP și EOPNOTSUPP au aceeași valoare în Linux, dar conform POSIX.1 aceste valori de
eroare ar trebui să fie distincte.)
EOVERFLOW Valoare prea mare pentru a fi stocată în tipul de date (POSIX.1-2001).
EOWNERDEAD Proprietarul a murit (POSIX.1-2008).
EPERM Operație nepermisă (POSIX.1-2001).
EPFNOSUPPORT Familia de protocoale nu este acceptată.
EPIPE Conductă ruptă (POSIX.1-2001).
EPROTO Eroare de protocol (POSIX.1-2001).
EPROTONOSUPPORT Protocolul nu este acceptat (POSIX.1-2001).
EPROTOTYPE Tip greșit de protocol pentru soclu (POSIX.1-2001).
ERANGE Rezultatul este prea mare (POSIX.1, C99).
EREMCHG Adresa de la distanță a fost modificată.
EREMOTE Obiectul este la distanță.
EREMOTEIO Eroare de In/Ieș la distanță.
ERESTART Apelul de sistem întrerupt ar trebui să fie repornit.
ERFKILL Operația nu este posibilă din cauza RF-kill (sercviciul de radiofrecvență deconectat).
EROFS Sistem de fișiere de numai-citire (POSIX.1-2001).
ESHUTDOWN Nu se poate trimite după deconectarea punctului final de transfer.
ESPIPE Căutare nevalidă (POSIX.1-2001).
ESOCKTNOSUPPORT Tip de soclu neacceptat.
ESRCH Nu există un astfel de proces (POSIX.1-2001).
ESTALE Gestionare de fișiere învechită (POSIX.1-2001).
Această eroare poate apărea pentru NFS și pentru alte sisteme de fișiere.
ESTRPIPE Eroare de conductă de fluxuri.
ETIME Temporizator expirat [POSIX.1 (XSI STREAMS option)].
(POSIX.1 spune „STREAM ioctl(2) timeout” - s-a depășit timpul de așteptare al FLUXULUI
ioctl(2).)
ETIMEDOUT Conexiunea a expirat (POSIX.1-2001).
ETOOMANYREFS Prea multe referințe: nu se pot îmbina.
ETXTBSY Fișier text ocupat (POSIX.1-2001).
EUCLEAN Structura trebuie curățată.
EUNATCH Controlorul de protocol nu este atașat.
EUSERS Prea mulți utilizatori.
EWOULDBLOCK Operația s-ar putea bloca (poate fi aceeași valoare ca EAGAIN) (POSIX.1-2001).
EXDEV Legătură nevalidă între dispozitive (POSIX.1-2001).
EXFULL Schimbul este plin.
NOTE
O greșeală frecventă este de a face
if (apelul-oarecare() == -1) {
printf("apelul-oarecare() a eșuat\n");
if (errno == ...) { ... }
}
în care errno nu mai trebuie să aibă valoarea pe care a avut-o la returnarea de la apelul-oarecare() (de
exemplu, este posibil să fi fost modificată de printf(3)). Dacă valoarea lui errno trebuie păstrată de-a
lungul unui apel de bibliotecă, aceasta trebuie salvată:
if (apelul-oarecare() == -1) {
int errsv = errno;
printf("apelul-oarecare() a eșuat\n");
if (errsv == ...) { ... }
}
Rețineți că API-urile firelor POSI nu configurează errno în caz de eroare. În schimb, în caz de eșec,
acestea returnează un număr de eroare ca rezultat al funcției. Aceste numere de eroare au aceleași
semnificații ca numerele de eroare returnate în errno de alte API-uri.
Pe unele sisteme vechi, <errno.h> nu era prezent sau nu declara errno, astfel încât era necesar să se
declare errno manual (adică extern int errno). Nu faceți acest lucru. A încetat de mult să mai fie
necesar și va cauza probleme cu versiunile moderne ale bibliotecii C.
CONSULTAȚI ȘI
errno(1), err(3), error(3), perror(3), strerror(3)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 15 iunie 2024 errno(3)