Provided by: manpages-pl-dev_4.13-4_all bug

NAZWA

       errno - numer ostatniego błędu

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:  Nazwa  jest  definiowana  przez  POSIX.1-2001,  jak i przez póżniejsze wersje standardu
          POSIX.1, chyba że zaznaczono, że jest inaczej.

       *  POSIX.1-2008: Nazwa jest definiowana  przez  POSIX.1-2008,  ale  nie  była  obecna  we  wcześniejszych
          standardach POSIX.1.

       *  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.

       ELNRANGE        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         Brak dostępnych komunikatów w głównej kolejce odczytu strumieni (POSIX.1-2001).

       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           Niepoprawne dowiązanie (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)

O STRONIE

       Angielska  wersja  tej strony pochodzi z wydania 5.10 projektu Linux man-pages. Opis projektu, informacje
       dotyczące   zgłaszania   błędów   oraz   najnowszą   wersję   oryginału   można   znaleźć   pod   adresem
       https://www.kernel.org/doc/man-pages/.

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.

                                               1 listopada 2020 r.                                      ERRNO(3)