WRITE(2) Podrcznik programisty Linuksa WRITE(2)
write - zapis do deskryptora pliku
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
write zapisuje maksymalnie count bajtw do pliku wskazywanego przez
deskryptor fd. Zapis nastpuje z bufora wskazywanego przez buf. POSIX
wymaga, by read(), ktre moe pojawi si po zakoczeniu write(), zwrcio
nowe dane. Naley zauway, e nie wszystkie systemy plikw s zgodne z
POSIX.
Po pomylnym zakoczeniu zwracana jest liczba zapisanych bajtw (zero
oznacza nie zapisanie niczego). Po bdzie zwracane jest -1 i odpowiednio
ustawiane errno. Jeli count jest rwne zero, a deskryptor pliku odnosi
si do zwykego pliku, zostanie zwrcone zero, nie powodujc adnych innych
efektw. Dla plikw specjalnych wyniki s nieprzenone.
EBADF fd nie jest prawidowym deskryptorem pliku lub nie jest otwarty
dla zapisu.
EINVAL fd jest dowizany do obiektu, ktry nie nadaje si do zapisu.
EFAULT buf jest poza dostpn dla uytkownika przestrzeni adresow.
EFBIG Wykonano prb zapisu do pliku przekraczajc zaleny od implemen-
tacji maksymalny rozmiar pliku lub przekraczajc maksymalny
rozmian pliku dla danego procesu. Ewentualnie, wystpia prba
zapisu na pozycji poza maksymaln dozwolon pozycj w pliku.
EPIPE fd jest podczony do potoku, lub gniazda, ktrego koniec czytajcy
jest zamknity. Gdy wystpi taka sytuacja, proces piszcy rwnie
otrzyma sygna SIGPIPE. (Tak wic warto zwracana podczas zapisu
jest widoczna jedynie, gdy program przechwytuje blokuje lub
ignoruje ten sygna.)
EAGAIN Wybrano nieblokujce we/wy (za pomoc O_NONBLOCK), a do potoku lub
gniazda fd nie mona natychmiast zapisa danych.
EINTR Wywoanie zostao przerwane sygnaem przed zapisaniem jakichkolwiek
danych.
ENOSPC Na urzdzeniu zawierajcym plik, do ktrego odnosi si fd, nie ma
miejsca na dane.
EIO Podczas modyfikacji i-wza wystpi niskopoziomowy bd we/wy.
Mog wystpi rwnie inne bdy, zalene od rodzaju obiektu podczonego do fd.
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 dokumentuje dodatkowe kody bdw
EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO i ERANGE. Pod SVr4 zapis moe
zosta przerwany w kadej chwili, nie za tylko przed zapisaniem
jakichkolwiek danych, zwracajc EINTR.
Pomylne zakoczenie write nie gwarantuje, e dane zostay zapisane na
dysku. W rzeczywistoci, w niektrych bdnych implementacjach nie
gwarantuje to nawet, e zostao zarezerwowane miejsce na dane. Jedynym
sposobem, aby te rzeczy zapewni jest wywoanie fsync(2) po zapisaniu
wszytkich danych.
close(2), fcntl(2), fsync(2), ioctl(2), lseek(2), open(2), read(2),
select(2), fwrite(3), writev(3)
Linux 2.0.32 2001-12-13 WRITE(2)