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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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)