Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       write - zapis do deskryptora pliku

SKŁADNIA

       #include <unistd.h>

       ssize_t write(int fd, const void *buf, size_t count);

OPIS

       write  zapisuje  maksymalnie  count  bajtów do pliku wskazywanego przez
       deskryptor fd.  Zapis następuje z bufora wskazywanego przez buf.  POSIX
       wymaga,  by  read(),  które  może  pojawić  się po zakończeniu write(),
       zwróciło nowe dane. Należy zauważyć, że nie wszystkie systemy plików są
       zgodne z POSIX.

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu zwracana jest liczba zapisanych bajtów (zero
       oznacza  nie  zapisanie  niczego).  Po  błędzie  zwracane  jest  -1   i
       odpowiednio ustawiane errno.  Jeśli count jest równe zero, a deskryptor
       pliku odnosi  się  do  zwykłego  pliku,  zostanie  zwrócone  zero,  nie
       powodując  żadnych  innych  efektów.   Dla plików specjalnych wyniki są
       nieprzenośne.

BŁĘDY

       EBADF  fd nie jest prawidłowym deskryptorem pliku lub nie jest  otwarty
              dla zapisu.

       EINVAL fd jest dowiązany do obiektu, który nie nadaje się do zapisu.

       EFAULT buf jest poza dostępną dla użytkownika przestrzenią adresową.

       EFBIG  Wykonano   próbę  zapisu  do  pliku  przekraczającą  zależny  od
              implementacji  maksymalny  rozmiar  pliku   lub   przekraczającą
              maksymalny   rozmian  pliku  dla  danego  procesu.  Ewentualnie,
              wystąpiła próba zapisu  na  pozycji  poza  maksymalną  dozwoloną
              pozycją w pliku.

       EPIPE  fd  jest  podłączony  do  potoku,  lub  gniazda,  którego koniec
              czytający jest zamknięty.  Gdy  wystąpi  taka  sytuacja,  proces
              piszący  również  otrzyma  sygnał  SIGPIPE.   (Tak  więc wartość
              zwracana podczas  zapisu  jest  widoczna  jedynie,  gdy  program
              przechwytuje blokuje lub ignoruje ten sygnał.)

       EAGAIN Wybrano  nieblokujące  we/wy (za pomocą O_NONBLOCK), a do potoku
              lub gniazda fd nie można natychmiast zapisać danych.

       EINTR  Wywołanie   zostało   przerwane   sygnałem   przed    zapisaniem
              jakichkolwiek danych.

       ENOSPC Na  urządzeniu  zawierającym plik, do którego odnosi się fd, nie
              ma miejsca na dane.

       EIO    Podczas modyfikacji i-węzła wystąpił niskopoziomowy błąd  we/wy.

       Mogą   wystąpić   również   inne  błędy,  zależne  od  rodzaju  obiektu
       podłączonego do fd.

ZGODNE Z

       SVr4, SVID, POSIX, X/OPEN,  4.3BSD.  SVr4  dokumentuje  dodatkowe  kody
       błędów  EDEADLK,  ENOLCK, ENOLNK, ENOSR, ENXIO i ERANGE. Pod SVr4 zapis
       może zostać przerwany w każdej chwili, nie zaś tylko  przed  zapisaniem
       jakichkolwiek danych, zwracając EINTR.

NOTES

       Pomyślne  zakończenie write nie gwarantuje, że dane zostały zapisane na
       dysku. W rzeczywistości,  w  niektórych  błędnych  implementacjach  nie
       gwarantuje  to nawet, że zostało zarezerwowane miejsce na dane. Jedynym
       sposobem, aby te rzeczy zapewnić jest wywołanie fsync(2)  po  zapisaniu
       wszytkich danych.

ZOBACZ TAKŻE

       close(2),  fcntl(2),  fsync(2),  ioctl(2),  lseek(2), open(2), read(2),
       select(2), fwrite(3), writev(3)