plucky (3) errno.3.gz

Provided by: manpages-pl-dev_4.25.1-1_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.

       Każdej nazwie błędu  określonej  przez  POSIX.1  musi  odpowiadać  inna  wartość  z  wyjątkiem  EAGAIN  i
       EWOULDBLOCK,  które  mogą  mieć  tę  samą  wartość.  W  Linuksie mają one taką samą wartość na wszystkich
       architekturach.

       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    Nazwa jest zdefiniowana przez standard C99.

       Poniżej przedstawiono listę symbolicznych nazw błędów, które są zdefiniowane pod Linuksem:

       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       Na  większość architektur — synonim EDEADLK. Na niektórych architekturach (np. linuksowym
                       MIPS, PowerPC, SPARC) jest to oddzielny kod błędu „Błąd zakleszczenia blokowania pliku”.

       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          Zbyt  wiele  otwartych  plików  (POSIX.1-2001);  zwykle spowodowane przekroczeniem limitu
                       zasobów  RLIMIT_NOFILE  opisanego  w   getrlimit(2).   Może   być   spowodowane   również
                       przekroczeniem limitu określonego w /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          „No anode” — dosł. brak anody (?!). /Domniemywa  się,  że  mogło  chodzić  tu  o  wariant
                       „inode” — i-węzła lub o „allocation node” — węzeł alokacji — przyp. tłum./

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

       ENODATA         Atrybut  o  takiej  nazwie  nie istnieje lub proces nie ma dostępu do tego atrybutu, zob.
                       xattr(7).

                       W POSIX.1-2001 (opcja XSI STREAMS), błąd  ten  opisano  jako  „Nie  jest  dostępny  żaden
                       komunikat na początku kolejki odczytu STREAM”

       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           Błędne dowiązanie pomiędzy różnymi urządzeniami (POSIX.1-2001).

       EXFULL          Przepełniona wymiana.

UWAGI

       Powszechnym błędem jest robienie

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

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

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

       Proszę zauważyć, że API wątków POSIX nie ustawia errno w  razie  wystąpienia  błędu.  Przy  niepowodzeniu
       ustawiany  jest  numer  błędu  jako wynik funkcji. Te numery błędów mają takie samo znaczenie, jak numery
       błędów zwracane w errno przez inne interfejsy programistyczne.

       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  ⟨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⟩.