errno(3) Library Functions Manual errno(3) NUME errno - numarul ultimei erori BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include DESCRIERE Fiierul de antet definete variabila intreaga errno, care este configurata de apelurile sistemului i de unele funcii de biblioteca in cazul unei erori pentru a indica ce nu a mers bine. errno Valoarea din errno este semnificativa numai atunci cand valoarea de returnare a apelului a indicat o eroare (de exemplu, -1 de la majoritatea apelurilor sistemului; -1 sau NULL de la majoritatea funciilor de biblioteca); o funcie care reuete este autorizata sa modifice errno. Valoarea lui errno nu este niciodata stabilita la zero de catre niciun apel de sistem sau funcie de biblioteca. Pentru unele apeluri de sistem i funcii de biblioteca (de exemplu, getpriority(2)), -1 este un rezultat valid in caz de succes. In astfel de cazuri, o returnare de succes poate fi difereniata de o returnare de eroare prin configurarea errno la zero inainte de apel i apoi, daca apelul returneaza o stare care indica faptul ca este posibil sa fi avut loc o eroare, verificand pentru a vedea daca errno are o valoare diferita de zero. errno este definit de standardul ISO C ca fiind o lvaloare modificabila de tip int i nu trebuie sa fie declarata explicit; errno poate fi un macro. errno este ,,local intr-un fir"l; definirea sa intr-un fir nu afecteaza valoarea sa in niciun alt fir. Numere i nume de erori Numerele de eroare valide sunt toate numere pozitive. Fiierul de antet definete nume simbolice pentru fiecare dintre numerele de eroare posibile care pot aparea in errno. Toate numele erorilor specificate de POSIX.1 trebuie sa aiba valori distincte, cu excepia EAGAIN i EWOULDBLOCK, care pot fi aceleai. In Linux, acestea doua au aceeai valoare pe toate arhitecturile. Numerele de eroare care corespund fiecarui nume simbolic variaza de la un sistem UNIX la altul i chiar de la o arhitectura la alta in Linux. Prin urmare, valorile numerice nu sunt incluse ca parte a listei de nume de erori de mai jos. Funciile perror(3) i strerror(3) pot fi utilizate pentru a converti aceste nume in mesaje de eroare textuale corespunzatoare. In orice sistem Linux particular, se poate obine o lista a tuturor numelor simbolice de erori i a numerelor de erori corespunzatoare folosind comanda errno(1) (parte a pachetului moreutils): $ errno -l; EPERM 1 Operaia nu este permisa ENOENT 2 Nu exista un astfel de fiier sau director ESRCH 3 Nu exista un astfel de proces EINTR 4 Apel de sistem intrerupt EIO 5 Eroare de intrare/ieire ... Comanda errno(1) poate fi, de asemenea, utilizata pentru a cauta numere i nume de erori individuale i pentru a cauta erori utilizand iruri de caractere din descrierea erorii, ca in exemplele urmatoare: $ errno 2; ENOENT 2 Nu exista un astfel de fiier sau director $ errno ESRCH; ESRCH 3 Nu exista un astfel de proces $ errno -s permission; EACCES 13 Permisiune refuzata Lista numelor de erori In lista de nume simbolice ale erorilor de mai jos, diferite nume sunt marcate dupa cum urmeaza: POSIX.1-2001 Numele este definit de POSIX.1-2001 i este definit in versiunile ulterioare ale POSIX.1, daca nu se indica altfel. POSIX.1-2008 Numele este definit in POSIX.1-2008, dar nu era prezent in standardele POSIX.1 anterioare. C99 Numele este definit de C99. Mai jos este o lista a numelor simbolice de erori care sunt definite in Linux: E2BIG Lista de argumente este prea lunga (POSIX.1-2001). EACCES Permisiune refuzata (POSIX.1-2001). EADDRINUSE Adresa este deja utilizata (POSIX.1-2001). EADDRNOTAVAIL Adresa nu este disponibila (POSIX.1-2001). EAFNOSUPPORT Familia de adrese nu este acceptata (POSIX.1-2001). EAGAIN Resursa temporar indisponibila (poate fi aceeai valoare ca EWOULDBLOCK) (POSIX.1-2001). EALREADY Conexiunea este deja in curs (POSIX.1-2001). EBADE Schimb nevalid. EBADF Descriptor de fiier incorect (POSIX.1-2001). EBADFD Descriptor de fiier in stare proasta. EBADMSG Mesaj incorect (POSIX.1-2001). EBADR Descriptor de solicitare nevalid. EBADRQC Cod de solicitare nevalid. EBADSLT Slot nevalid. EBUSY Dispozitiv sau resursa ocupata (POSIX.1-2001). ECANCELED Operaie anulata (POSIX.1-2001). ECHILD Nu exista procese-copil (POSIX.1-2001). ECHRNG Numarul canalului este in afara intervalului. ECOMM Eroare de comunicare la trimitere. ECONNABORTED Conexiune intrerupta (POSIX.1-2001). ECONNREFUSED Conexiune refuzata (POSIX.1-2001). ECONNRESET Conexiune reiniiata (POSIX.1-2001). EDEADLK Blocare de resursa evitata (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 fiierului". EDESTADDRREQ Adresa de destinaie necesara (POSIX.1-2001). EDOM Argument matematic in afara domeniului funciei (POSIX.1, C99). EDQUOT Cota de disc a fost depaita (POSIX.1-2001). EEXIST Fiierul exista (POSIX.1-2001). EFAULT Adresa greita (POSIX.1-2001). EFBIG Fiier prea mare (POSIX.1-2001). EHOSTDOWN Gazda este deconectata. EHOSTUNREACH Gazda este inaccesibila (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 afiat aici este descrierea erorii glibc; in POSIX.1, aceasta eroare este descrisa ca ,,Secvena ilegala de octei". EINPROGRESS Operaiune in curs de desfaurare (POSIX.1-2001). EINTR Apel de funcie intrerupt (POSIX.1-2001); a se vedea signal(7). EINVAL Argument nevalid (POSIX.1-2001). EIO Eroare de intrare/ieire (POSIX.1-2001). EISCONN Soclul este conectat (POSIX.1-2001). EISDIR Este un director (POSIX.1-2001). EISNAM Este un fiier de tipul numit. EKEYEXPIRED Cheia a expirat. EKEYREJECTED Cheia a fost respinsa de catre serviciu. EKEYREVOKED Cheia a fost revocata. EL2HLT Nivelul 2 oprit. EL2NSYNC Nivelul 2 nu este sincronizat. EL3HLT Nivelul 3 oprit. EL3RST Nivelul 3 reiniiat. ELIBACC Nu se poate accesa o biblioteca partajata necesara. ELIBBAD Se acceseaza o biblioteca partajata corupta. ELIBMAX Se incearca vincularea la prea multe biblioteci partajate. ELIBSCN Seciunea .lib din a.out este corupta ELIBEXEC Nu se poate executa direct o biblioteca partajata. ELNRNG Numarul de legatura este in afara intervalului. ELOOP Prea multe niveluri de legaturi simbolice (POSIX.1-2001). EMEDIUMTYPE Tip de mediu(suport) greit. EMFILE Prea multe fiiere deschise (POSIX.1-2001). Cauzata frecvent de depairea limitei de resurse RLIMIT_NOFILE descrisa in getrlimit(2). Poate fi cauzata i de depairea limitei specificate in /proc/sys/fs/nr_open. EMLINK Prea multe legaturi (POSIX.1-2001). EMSGSIZE Mesajul este prea lung (POSIX.1-2001). EMULTIHOP Incercare de salturi multiple ,,multihop" (POSIX.1-2001). ENAMETOOLONG Numele fiierului este prea lung (POSIX.1-2001). ENETDOWN Reeaua este cazuta(dezactivata) (POSIX.1-2001). ENETRESET Conexiune intrerupta de reea (POSIX.1-2001). ENETUNREACH Reea inaccesibila (POSIX.1-2001). ENFILE Prea multe fiiere deschise in sistem (POSIX.1-2001). In 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 literala; de asemenea ,,anode" poate sa insemne o vaiaie de nod-i, sau nod-alocat. ENOBUFS Nu exista spaiu tampon disponibil [POSIX.1 (opiunea XSI STREAMS)]. ENODATA Atributul numit nu exista sau procesul nu are acces la acest atribut; a se vedea xattr(7). In POSIX.1-2001 (opiunea XSI STREAMS), aceasta eroare a fost descrisa ca ,,Niciun mesaj nu este disponibil in coada de citire a fluxului (STREAM)". ENODEV Nu exista un astfel de dispozitiv (POSIX.1-2001). ENOENT Nu exista un astfel de fiier sau director (POSIX.1-2001). De obicei, aceasta eroare apare atunci cand un nume de ruta specificat nu exista, sau una dintre componentele din prefixul de director al unui nume de ruta nu exista, sau numele de ruta specificat este o legatura simbolica intrerupta(fara inta). ENOEXEC Eroare de format de execuie (POSIX.1-2001). ENOKEY Cheia necesara nu este disponibila. ENOLCK Nu exista blocaje disponibile (POSIX.1-2001). ENOLINK Legatura a fost intrerupta (POSIX.1-2001). ENOMEDIUM Nu a fost gasit niciun mediu(suport). ENOMEM Nu este suficient spaiu/nu se poate aloca memorie (POSIX.1-2001). ENOMSG Niciun mesaj de tipul dorit (POSIX.1-2001). ENONET Maina nu este in reea. ENOPKG Pachetul nu este instalat. ENOPROTOOPT Protocolul nu este disponibil (POSIX.1-2001). ENOSPC Nu mai exista spaiu liber pe dispozitiv (POSIX.1-2001). ENOSR Nu exista resurse STREAM [POSIX.1 (XSI STREAMS option)]. ENOSTR Nu este un flux(STREAM) [POSIX.1 (XSI STREAMS option)]. ENOSYS Funcie neimplementata (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 nerecuperabila (POSIX.1-2008). ENOTSOCK Nu este un soclu (POSIX.1-2001). ENOTSUP Operaie neacceptata (POSIX.1-2001). ENOTTY Operaie de control de In/Ie nepotrivita (POSIX.1-2001). ENOTUNIQ Numele nu este unic in reea. ENXIO Nu exista un astfel de dispozitiv sau adresa (POSIX.1-2001). EOPNOTSUPP Operaia nu este acceptata pe soclu (POSIX.1-2001). (ENOTSUP i EOPNOTSUPP au aceeai valoare in Linux, dar conform POSIX.1 aceste valori de eroare ar trebui sa fie distincte.) EOVERFLOW Valoare prea mare pentru a fi stocata in tipul de date (POSIX.1-2001). EOWNERDEAD Proprietarul a murit (POSIX.1-2008). EPERM Operaie nepermisa (POSIX.1-2001). EPFNOSUPPORT Familia de protocoale nu este acceptata. EPIPE Conducta rupta (POSIX.1-2001). EPROTO Eroare de protocol (POSIX.1-2001). EPROTONOSUPPORT Protocolul nu este acceptat (POSIX.1-2001). EPROTOTYPE Tip greit de protocol pentru soclu (POSIX.1-2001). ERANGE Rezultatul este prea mare (POSIX.1, C99). EREMCHG Adresa de la distana a fost modificata. EREMOTE Obiectul este la distana. EREMOTEIO Eroare de In/Ie la distana. ERESTART Apelul de sistem intrerupt ar trebui sa fie repornit. ERFKILL Operaia nu este posibila din cauza RF-kill (sercviciul de radiofrecvena deconectat). EROFS Sistem de fiiere de numai-citire (POSIX.1-2001). ESHUTDOWN Nu se poate trimite dupa deconectarea punctului final de transfer. ESPIPE Cautare nevalida (POSIX.1-2001). ESOCKTNOSUPPORT Tip de soclu neacceptat. ESRCH Nu exista un astfel de proces (POSIX.1-2001). ESTALE Gestionare de fiiere invechita (POSIX.1-2001). Aceasta eroare poate aparea pentru NFS i pentru alte sisteme de fiiere. ESTRPIPE Eroare de conducta de fluxuri. ETIME Temporizator expirat [POSIX.1 (XSI STREAMS option)]. (POSIX.1 spune ,,STREAM ioctl(2) timeout" - s-a depait timpul de ateptare al FLUXULUI ioctl(2).) ETIMEDOUT Conexiunea a expirat (POSIX.1-2001). ETOOMANYREFS Prea multe referine: nu se pot imbina. ETXTBSY Fiier text ocupat (POSIX.1-2001). EUCLEAN Structura trebuie curaata. EUNATCH Controlorul de protocol nu este ataat. EUSERS Prea muli utilizatori. EWOULDBLOCK Operaia s-ar putea bloca (poate fi aceeai valoare ca EAGAIN) (POSIX.1-2001). EXDEV Legatura nevalida intre dispozitive (POSIX.1-2001). EXFULL Schimbul este plin. NOTE O greeala frecventa este de a face if (apelul-oarecare() == -1) { printf("apelul-oarecare() a euat\n"); if (errno == ...) { ... } } in care errno nu mai trebuie sa aiba valoarea pe care a avut-o la returnarea de la apelul-oarecare() (de exemplu, este posibil sa fi fost modificata de printf(3)). Daca valoarea lui errno trebuie pastrata de-a lungul unui apel de biblioteca, aceasta trebuie salvata: if (apelul-oarecare() == -1) { int errsv = errno; printf("apelul-oarecare() a euat\n"); if (errsv == ...) { ... } } Reinei ca API-urile firelor POSI nu configureaza errno in caz de eroare. In schimb, in caz de eec, acestea returneaza un numar de eroare ca rezultat al funciei. Aceste numere de eroare au aceleai semnificaii ca numerele de eroare returnate in errno de alte API-uri. Pe unele sisteme vechi, nu era prezent sau nu declara errno, astfel incat era necesar sa se declare errno manual (adica extern int errno). Nu facei acest lucru. A incetat de mult sa mai fie necesar i va cauza probleme cu versiunile moderne ale bibliotecii C. CONSULTAI I errno(1), err(3), error(3), perror(3), strerror(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 17 mai 2025 errno(3)