Provided by:
manpages-pl-dev_20060617-1_all 
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)