Provided by: manpages-pl-dev_4.21.0-2_all bug

NAZWA

       errno - numer ostatniego błędu

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <errno.h>

OPIS

       Plik  nagłówkowy  <errno.h>  definiuje  zmienną całkowitą errno, która jest ustawiana w razie błędu przez
       wywołania systemowe oraz pewne funkcje biblioteczne tak, aby zaznaczyć, co poszło źle.

   errno
       Wartość zmiennej errno jest istotna, tylko gdy wywołanie zwróciło  błąd  (tj.  -1  w  wypadku  większości
       wywołań  systemowych; -1 lub NULL w wypadku większości funkcji bibliotecznych), ale funkcja biblioteczna,
       która zakończyła się sukcesem, także może zmienić errno. Żadne  wywołanie  systemowe  ani  żadna  funkcja
       biblioteczna nie ustawiają errno na zero.

       W przypadku niektórych wywołań systemowych i funkcji bibliotecznych (np. getpriority(2)) -1 jest poprawną
       wartością  zwracaną  również  w  razie  powodzenia.  W takich wypadkach, aby sprawdzić, czy wywołanie lub
       funkcja zakończyły się powodzeniem czy błędem, należy ustawić errno na zero przed wywołaniem, a następnie
       - jeżeli wywołanie lub funkcja zwrócą wartość, która mogłaby wskazywać na wystąpienie błędu -  sprawdzić,
       czy wartość errno jest niezerowa.

       errno  jest definiowana przez standard ISO C jako modyfikowalna l-wartość typu int, która nie może zostać
       jawnie zadeklarowana; errno może być makrem. Wartość errno jest lokalna w obrębie  wątku,  jej  zmiana  w
       jednym wątku nie wpływa na wartość w innym.

   Numery i nazwy błędów
       Poprawne  numery  błędów są liczbami dodatnimi. Plik nagłówkowy <errno.h> definiuje nazwy symboliczna dla
       wszystkich dodatnich numerów błędów, które mogą wystąpić w zmiennej errno.

       All the error names specified by POSIX.1 must have distinct values, with  the  exception  of  EAGAIN  and
       EWOULDBLOCK, which may be the same.  On Linux, these two have the same value on all architectures.

       Numery  błędów,  które  odpowiadają nazwom symbolicznym, mogą być różne w różnych systemach uniksowych, a
       nawet mogą się różnić pomiędzy architekturami linuksowymi. Dlatego poniższa lista nazw błędów nie zawiera
       numerycznych wartości kodów błędów. Można użyć funkcji perror(3) i strerror(3) do skonwertowania nazw  do
       odpowiadających im tekstowych komunikatów błędów.

       Używając  polecenia  errno(1)  (z  pakietu moreutils) w dowolnym systemie linuksowym, można uzyskać listę
       wszystkich symbolicznych nazw błędów i odpowiadających im numerów błędów:

           $ errno -l
           EPERM 1 Operacja niedozwolona
           ENOENT 2 Nie ma takiego pliku ani katalogu
           ESRCH 3 Nie ma takiego procesu
           EINTR 4 Przerwane wywołanie systemowe
           EIO 5 Błąd wejścia/wyjścia
           ...

       Polecenia errno(1) można także użyć do wyszukania indywidualnych kodów i nazw błędów oraz  do  wyszukania
       błędów po ich opisach, tak jak w poniższych przykładach:

           $ errno 2
           ENOENT 2 Nie ma takiego pliku ani katalogu
           $ errno ESRCH
           ESRCH 3 Nie ma takiego procesu
           $ errno -s "brak dostępu"
           EACCES 13 Brak dostępu

   Lista nazw błędów
       W poniższej liście symbolicznych nazw błędów, pewne nazwy oznaczono w następujący sposób:

       POSIX.1-2001
              The  name  is  defined by POSIX.1-2001, and is defined in later POSIX.1 versions, unless otherwise
              indicated.

       POSIX.1-2008
              The name is defined in POSIX.1-2008, but was not present in earlier POSIX.1 standards.

       C99    The name is defined by C99.

       Below is a list of the symbolic error names that are defined on Linux:

       E2BIG           Lista argumentów za długa (POSIX.1-2001).

       EACCES          Brak dostępu (POSIX.1-2001).

       EADDRINUSE      Adres jest już w użyciu (POSIX.1-2001).

       EADDRNOTAVAIL   Niedostępny adres (POSIX.1-2001).

       EAFNOSUPPORT    Rodzina adresów nieobsługiwana (POSIX.1-2001).

       EAGAIN          Zasoby chwilowo niedostępne (może mieć tę samą wartość, co EWOULDBLOCK) (POSIX.1-2001).

       EALREADY        Operacja jest już wykonywana (POSIX.1-2001).

       EBADE           Błędna wymiana.

       EBADF           Błędny deskryptor pliku (POSIX.1-2001).

       EBADFD          Deskryptor pliku w złym stanie.

       EBADMSG         Błędny komunikat (POSIX.1-2001).

       EBADR           Błędny deskryptor żądania.

       EBADRQC         Zły kod żądania.

       EBADSLT         Błędny kanał.

       EBUSY           Urządzenie lub zasoby zajęte (POSIX.1-2001).

       ECANCELED       Operacja anulowana (POSIX.1-2001).

       ECHILD          Brak procesów potomnych (POSIX.1-2001).

       ECHRNG          Numer kanału poza zakresem.

       ECOMM           Błąd komunikacji podczas wysyłania.

       ECONNABORTED    Połączenie przerwane (POSIX.1-2001).

       ECONNREFUSED    Połączenie odrzucone (POSIX.1-2001).

       ECONNRESET      Połączenie zerwane (przez drugą stronę) (POSIX.1-2001).

       EDEADLK         Uniknięto zakleszczenia zasobów (POSIX.1-2001).

       EDEADLOCK       On most architectures, a synonym for EDEADLK.  On some architectures (e.g.,  Linux  MIPS,
                       PowerPC, SPARC), it is a separate error code "File locking deadlock error".

       EDESTADDRREQ    Wymagany jest adres docelowy (POSIX.1-2001).

       EDOM            Argument spoza dziedziny funkcji matematycznej (POSIX.1, C99).

       EDQUOT          Przekroczony limit dyskowy (POSIX.1-2001).

       EEXIST          Plik istnieje (POSIX.1-2001).

       EFAULT          Błędny adres (POSIX.1-2001).

       EFBIG           Plik zbyt duży (POSIX.1-2001).

       EHOSTDOWN       Urządzenie jest wyłączone.

       EHOSTUNREACH    Brak trasy do hosta (POSIX.1-2001).

       EHWPOISON       Strona pamięci ma błąd sprzętowy.

       EIDRM           Identyfikator został usunięty (POSIX.1-2001).

       EILSEQ          Błędny lub niepełny znak wielobajtowy (POSIX.1, C99).

                       Komunikat  tutaj  pokazany  pochodzi z opisu tego błędu w bibliotece glibc. W standardzie
                       POSIX.1 ten błąd jest opisany jako "Niepoprawna sekwencja bajtów".

       EINPROGRESS     Operacja jest właśnie wykonywana (POSIX.1-2001).

       EINTR           Przerwane wywołanie systemowe (POSIX.1-2001); patrz signal(7)

       EINVAL          Zły argument (POSIX.1-2001).

       EIO             Błąd wejścia/wyjścia (POSIX.1-2001).

       EISCONN         Gniazdo już jest połączone (POSIX.1-2001).

       EISDIR          Jest katalogiem (POSIX.1-2001).

       EISNAM          Jest plikiem nazwanym.

       EKEYEXPIRED     Klucz wygasł.

       EKEYREJECTED    Klucz został odrzucony przez usługę.

       EKEYREVOKED     Klucz został unieważniony.

       EL2HLT          Poziom 2 zatrzymany.

       EL2NSYNC        Poziom 2 niezsynchronizowany.

       EL3HLT          Poziom 3 zatrzymany.

       EL3RST          Poziom 3 zatrzymany.

       ELIBACC         Brak dostępu do wymaganej biblioteki dzielonej.

       ELIBBAD         Próba użycia uszkodzonej biblioteki dzielonej.

       ELIBMAX         Próba łączenia ze zbyt wieloma bibliotekami dzielonymi.

       ELIBSCN         Sekcja .lib w a.out jest uszkodzona.

       ELIBEXEC        Nie można bezpośrednio uruchomić biblioteki dzielonej.

       ELNRNG          Numer kanału poza zakresem.

       ELOOP           Za duże zagnieżdżenie dowiązań symbolicznych (POSIX.1-2001).

       EMEDIUMTYPE     Niewłaściwy typ medium.

       EMFILE          Too many open files (POSIX.1-2001).   Commonly  caused  by  exceeding  the  RLIMIT_NOFILE
                       resource  limit  described  in  getrlimit(2).   Can also be caused by exceeding the limit
                       specified in /proc/sys/fs/nr_open.

       EMLINK          Za dużo dowiązań (POSIX.1-2001).

       EMSGSIZE        Komunikat za długi (POSIX.1-2001).

       EMULTIHOP       Próba przejścia przez zbyt wiele ruterów (POSIX.1-2001).

       ENAMETOOLONG    Za długa nazwa pliku (POSIX.1-2001).

       ENETDOWN        Sieć jest wyłączona (POSIX.1-2001).

       ENETRESET       Połączenie zerwane przez sieć (POSIX.1-2001).

       ENETUNREACH     Sieć jest niedostępna (POSIX.1-2001).

       ENFILE          Zbyt wiele  otwartych  plików  (POSIX.1-2001);  pod  Linuksem  zwykle  jest  to  rezultat
                       natrafienia na limit /proc/sys/fs/file-max (patrz proc(5)).

       ENOANO          Brak anody.

       ENOBUFS         Brak miejsca w buforze (POSIX.1 (opcja XSI STREAMS)).

       ENODATA         The  named  attribute does not exist, or the process has no access to this attribute; see
                       xattr(7).

                       In POSIX.1-2001 (XSI STREAMS  option),  this  error  was  described  as  "No  message  is
                       available on the STREAM head read queue".

       ENODEV          Nie ma takiego urządzenia (POSIX.1-2001).

       ENOENT          Nie ma takiego pliku ani katalogu (POSIX.1-2001).

                       Zwykle  błąd  ten  jest  wynikiem  nieistnienia podanej ścieżki lub nieistnienia jednej z
                       części składowej (katalogu) ścieżki lub oznacza, że podana  ścieżka  jest  nieprawidłowym
                       dowiązaniem symbolicznym.

       ENOEXEC         Błędny format pliku wykonywalnego (POSIX.1-2001).

       ENOKEY          Wymagany klucz niedostępny.

       ENOLCK          Brak dostępnych blokad (POSIX.1-2001).

       ENOLINK         Połączenie zostało przerwane (POSIX.1-2001).

       ENOMEDIUM       Brak medium.

       ENOMEM          Za mało miejsca/nie można przydzielić pamięci (POSIX.1-2001).

       ENOMSG          Brak komunikatu o pożądanym typie (POSIX.1-2001).

       ENONET          Maszyna nie znajduje się w tej sieci.

       ENOPKG          Pakiet nie jest zainstalowany.

       ENOPROTOOPT     Protokół niedostępny (POSIX.1-2001).

       ENOSPC          Brak miejsca na urządzeniu (POSIX.1-2001).

       ENOSR           Brak dodatkowych strumieni (POSIX.1 (opcja XSI STREAMS)).

       ENOSTR          Nie jest strumieniem (POSIX.1 (opcja XSI STREAMS)).

       ENOSYS          Niezaimplementowana funkcja (POSIX.1-2001).

       ENOTBLK         Wymagane urządzenie blokowe.

       ENOTCONN        Drugi koniec nie jest połączony (POSIX.1-2001).

       ENOTDIR         Nie jest katalogiem (POSIX.1-2001).

       ENOTEMPTY       Katalog nie jest pusty (POSIX.1-2001).

       ENOTRECOVERABLE Stan bez możliwości wyjścia (POSIX.1-2008).

       ENOTSOCK        Nie jest gniazdem (POSIX.1-2001).

       ENOTSUP         Operacja nieobsługiwana (POSIX.1-2001).

       ENOTTY          Niewłaściwa operacja kontrolna (ioctl) wejścia/wyjścia (POSIX.1-2001).

       ENOTUNIQ        Nazwa nie jest unikatowa w sieci.

       ENXIO           Nie ma takiego urządzenia ani adresu (POSIX.1-2001).

       EOPNOTSUPP      Operacja na gnieździe nieobsługiwana (POSIX.1-2001).

                       (ENOTSUP  i  EOPNOTSUPP  mają  pod Linuksem tę samą wartość, chociaż zgodnie z POSIX.1 te
                       wartość powinny się różnić)

       EOVERFLOW       Wartość za duża dla zdefiniowanego typu danych (POSIX.1-2001).

       EOWNERDEAD      Właściciel zmarł (POSIX.1-2008).

       EPERM           Operacja niedozwolona (POSIX.1-2001).

       EPFNOSUPPORT    Nieobsługiwana rodzina protokołów.

       EPIPE           Przerwany potok (POSIX.1-2001).

       EPROTO          Błąd protokołu (POSIX.1-2001).

       EPROTONOSUPPORT Protokół nieobsługiwany (POSIX.1-2001).

       EPROTOTYPE      Typ protokołu nie pasuje do gniazda (POSIX.1-2001).

       ERANGE          Za duży wynik (POSIX.1, C99).

       EREMCHG         Zmienił się adres drugiego końca.

       EREMOTE         Obiekt jest obiektem zdalnym (podmontowanym przez NFS).

       EREMOTEIO       Błąd wejścia/wyjścia w odległym systemie.

       ERESTART        Należy wznowić przerwane wywołanie systemowe.

       ERFKILL         Operacja niemożliwa ze względu na RF-kill.

       EROFS           System plików wyłącznie do odczytu (POSIX.1-2001).

       ESHUTDOWN       Wysyłanie po zamknięciu gniazda jest niemożliwe.

       ESPIPE          Błędne przesunięcie (POSIX.1-2001).

       ESOCKTNOSUPPORT Nieobsługiwany typ gniazda.

       ESRCH           Nie ma takiego procesu (POSIX.1-2001).

       ESTALE          Nieaktualny uchwyt pliku (POSIX.1-2001).

                       Ten błąd może wystąpić na systemie plików NFS i na innych systemach plików.

       ESTRPIPE        Błąd potoku biblioteki strumieni.

       ETIME           Upłynął czas stopera (POSIX.1 (opcja XSI STREAMS)).

                       (POSIX.1 mówi "Przekroczenie czasu STREAM ioctl(2)").

       ETIMEDOUT       Przekroczony czas oczekiwania na połączenie (POSIX.1-2001).

       ETOOMANYREFS    Za dużo odniesień: dowiązanie niemożliwe.

       ETXTBSY         Plik tekstowy zajęty (POSIX.1-2001).

       EUCLEAN         Struktura wymaga wyczyszczenia.

       EUNATCH         Sterownik protokołu nie jest podłączony.

       EUSERS          Za dużo użytkowników.

       EWOULDBLOCK     Operacja zostałaby zablokowana (może mieć tę samą wartość, co EAGAIN) (POSIX.1-2001).

       EXDEV           Invalid cross-device link (POSIX.1-2001).

       EXFULL          Przepełniona wymiana.

UWAGI

       Powszechnym błędem jest robienie

           if (somecall() == -1) {
               printf("somecall() zwróciło błąd\n");
               if (errno == ...) { ... }
           }

       ponieważ errno niekoniecznie musi mieć tę samą wartość, jaką miało po powrocie z  somecall()  (tj.  mogła
       zostać  zmieniona  przez  printf(3)).   Jeżeli  wartość  errno powinna być utrzymana pomiędzy wywołaniami
       funkcji, musi być zachowywana:

           if (somecall() == -1) {
               int errsv = errno;
               printf("somecall() zwróciło błąd\n");
               if (errsv == ...) { ... }
           }

       Note that the POSIX threads APIs do not set errno on error.  Instead, on failure  they  return  an  error
       number  as the function result.  These error numbers have the same meanings as the error numbers returned
       in errno by other APIs.

       Na niektórych antycznych systemach <errno.h> był nieobecny lub nie deklarował errno, tak że  trzeba  było
       zadeklarować  errno  samemu  (tj.  extern  int  errno). Nie należy tego robić. Już od dawna nie ma takiej
       potrzeby, a może  powodować problemy, gdy są używane nowoczesne wersje biblioteki C.

ZOBACZ TAKŻE

       errno(1), err(3), error(3), perror(3), strerror(3)

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Adam  Byrtek  <alpha@irc.pl>,  Andrzej
       Krzysztofowicz  <ankry@green.mf.pg.gda.pl>,  Paweł  Krawczyk  (eglibc)  <kravietz@ceti.pl>,  Jakub Bogusz
       (eglibc)    <qboosh@pld-linux.org>,    Robert    Luberda    <robert@debian.org>    i    Michał     Kułach
       <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3  lub  nowszej.   Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.03                            4 grudnia 2022 r.                                       errno(3)