focal (3) errno.3.gz

Provided by: manpages-pl-dev_0.7-2_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.  Wartość  ta  jest
       istotna,  tylko  gdy wywołanie zwróciło błąd (tj. -1 w wypadku większości wywołań systemowych albo -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.

       Poprawne  numery błędów są niezerowe; żadne wywołanie systemowe lub funkcja biblioteczne nigdy nie ustawi
       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.

       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ść.

       Poniżej  przedstawiono  listę  nazw błędów, które są zdefiniowane pod Linuksem. Niektóre z nich oznaczono
       jako POSIX.1, wskazując, że nazwa błędu jest zdefiniowana przez POSIX.1-2001, lub jako C99, wskazując  na
       nazwy błędów zdefiniowane przez C99.

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

       EACCES          Brak dostępu (POSIX.1)

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

       EADDRNOTAVAIL   Niedostępny adres (POSIX.1)

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

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

       EALREADY        Operacja jest już wykonywana (POSIX.1)

       EBADE           Błędna wymiana

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

       EBADFD          Deskryptor pliku w złym stanie

       EBADMSG         Błędny komunikat (POSIX.1)

       EBADR           Błędny deskryptor żądania

       EBADRQC         Zły kod żądania

       EBADSLT         Błędny kanał

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

       ECANCELED       Operacja anulowana (POSIX.1)

       ECHILD          Brak procesów potomnych (POSIX.1)

       ECHRNG          Numer kanału poza zakresem

       ECOMM           Błąd komunikacji podczas wysyłania

       ECONNABORTED    Połączenie przerwane (POSIX.1)

       ECONNREFUSED    Połączenie odrzucone (POSIX.1)

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

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

       EDEADLOCK       Synonim EDEADLK

       EDESTADDRREQ    Wymagany jest adres docelowy (POSIX.1)

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

       EDQUOT          Przekroczony limit dyskowy (POSIX.1)

       EEXIST          Plik istnieje (POSIX.1)

       EFAULT          Błędny adres (POSIX.1)

       EFBIG           Plik zbyt duży (POSIX.1)

       EHOSTDOWN       Urządzenie jest wyłączone

       EHOSTUNREACH    Host jest niedostępny (POSIX.1)

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

       EILSEQ          Niepoprawna sekwencja bajtów (POSIX.1, C99)

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

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

       EINVAL          Zły argument (POSIX.1)

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

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

       EISDIR          Jest katalogiem (POSIX.1)

       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

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

       EMEDIUMTYPE     Niewłaściwy typ medium

       EMFILE          Zbyt  wiele  otwartych plików (POSIX.1); zwykle spowodowane przekroczeniem limitu zasobów
                       RLIMIT_NOFILE opisanego w getrlimit(2)

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

       EMSGSIZE        Komunikat za długi (POSIX.1)

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

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

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

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

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

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

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

       ENODATA         Brak dostępnych komunikatów w głównej kolejce odczytu strumieni (POSIX.1)

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

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

                       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)

       ENOKEY          Wymagany klucz niedostępny

       ENOLCK          Brak dostępnych blokad (POSIX.1)

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

       ENOMEDIUM       Brak medium

       ENOMEM          Nie można przydzielić pamięci (POSIX.1)

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

       ENONET          Maszyna nie znajduje się w tej sieci

       ENOPKG          Pakiet nie jest zainstalowany

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

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

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

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

       ENOSYS          Niezaimplementowana funkcja (POSIX.1)

       ENOTBLK         Wymagane urządzenie blokowe

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

       ENOTDIR         Nie jest katalogiem (POSIX.1)

       ENOTEMPTY       Katalog nie jest pusty (POSIX.1)

       ENOTSOCK        Nie jest gniazdem (POSIX.1)

       ENOTSUP         Operacja nieobsługiwana (POSIX.1)

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

       ENOTUNIQ        Nazwa nie jest unikatowa w sieci

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

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

                       (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)

       EPERM           Operacja niedozwolona (POSIX.1)

       EPFNOSUPPORT    Nieobsługiwana rodzina protokołów

       EPIPE           Przerwany potok (POSIX.1)

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

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

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

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

       EREMCHG         Zmienił się adres drugiego końca

       EREMOTE         Zdalny obiekt jest obiektem podmontowanym przez NFS

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

       ERESTART        Należy wznowić przerwane wywołanie systemowe

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

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

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

       ESOCKTNOSUPPORT Nieobsługiwany typ gniazda

       ESRCH           Nie ma takiego procesu (POSIX.1)

       ESTALE          Nieaktualny uchwyt pliku (POSIX.1)

                       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)

       ETXTBSY         Plik tekstowy zajęty (POSIX.1)

       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)

       EXDEV           Niepoprawne dowiązanie (POSIX.1)

       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 == ...) { ... }
           }

       Powszechnie w tradycyjnym C deklarowało się ręcznie errno (np. extern int  errno)  zamiast  włączać  plik
       <errno.h>.  Nie  rób  tego.  To  nie  będzie  działało  z nowoczesnymi wersjami biblioteki C. Jednakże na
       (bardzo) starych systemach Unix, <errno.h> może nie istnieć i ta deklaracja będzie potrzebna.

ZOBACZ TAKŻE

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

O STRONIE

       Angielska wersja tej strony pochodzi z wydania 4.07 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   man   są:   Adam   Byrtek   (PTM)
       <abyrtek@priv.onet.pl>,  Andrzej  Krzysztofowicz  (PTM)  <ankry@mif.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>.

       Polskie  tłumaczenie  jest  częścią  projektu  manpages-pl;  uwagi,  pomoc,  zgłaszanie błędów na stronie
       http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją  4.07 oryginału.

                                                   2016-03-15                                           ERRNO(3)