table of contents
other languages
other sections
WRITE(2) | Podręcznik programisty Linuksa | WRITE(2) |
NAZWA¶
write - zapisuje do deskryptora plikuSKŁADNIA¶
#include <unistd.h>OPIS¶
write() zapisuje do liczba bajtów z bufora wskazanego przez buf do pliku określonego przez deskryptor pliku fd.ZWRACANA WARTOŚĆ¶
Po pomyślnym wykonaniu, zwracana jest liczba zapisanych bajtów (zero informuje, że nic nie zostało zapisane). Przy błędzie zwracane jest -1 i ustawiana jest odpowiednia wartość zmiennej errno.BŁĘDY¶
- EAGAIN
- Deskryptor pliku fd odwołuje się do gniazda i został oznaczony jako nieblokujący ( O_NONBLOCK), a zapis go zablokuje.
- EAGAIN lub EWOULDBLOCK
- Deskryptor pliku fd odwołuje się do gniazda i został oznaczony jako nieblokujący ( O_NONBLOCK), a zapis go zablokuje. POSIX.1-2001 pozwala w tej sytuacji na zwrócenie błędu ale nie wymaga aby ta stała miała taką samą wartość, portowalna aplikacja powinna sprawdzać obie możliwości.
- EBADF
- fd nie jest prawidłowym deskryptorem pliku lub nie jest otwarty do zapisu
- EDESTADDRREQ
- fd odwołuje się do gniazda datagramowego dla którego adres nie został ustalony przy użyciu connect(2).
- EFAULT
- buf jest poza dostępną przestrzenią adresową.
- EFBIG
- Dokonano próby zapisu pliku który przekracza zdefiniowane w implementacji maksymalne rozmiary pliku, rozmiary pliku procesu lub zapis na pozycję wykraczającą poza maksymalne dozwolone przesunięcie (offset).
- EINTR
- Wywołanie zostało przerwane przez sygnał przed zapisaniem jakichkolwiek danych, patrz signal(7).
- EINVAL
- fd jest dołączony do obiektu nieodpowiedniego do zapisu, plik został otwarty z flagą O_DIRECT i adres podany w buf bądź wartość liczba lub przesunięcie (offset) nie zostały odpowiednio dopasowane.
- EIO
- Podczas modyfikacji i-węzła nastąpił niskopoziomowy błąd wejścia/wyjścia.
- ENOSPC
- Urządzenie zawierające plik wskazany przez fd nie ma miejsca na dane.
- EPIPE
- fd jest podłączony do potoku (pipe) lub gniazda (socket) którego końcówka odczytująca jest zamknięta. Gdy taka sytuacja następuje, proces zapisujący również otrzyma sygnał SIGPIPE. (Więc wartość zwracana przez write() jest widziana tylko wówczas gdy program obsługuje, blokuje lub ignoruje ten sygnał).
ZGODNOŚĆ¶
SVr4, 4.3BSD, POSIX.1-2001.UWAGI¶
Pomyślny powrót z write() nie daje gwarancji, że dane zostały faktycznie zapisane na urządzeniu. W rzeczywistości, w niektórych wadliwych implementacjach, nie ma nawet pewności, że przestrzeń potrzebna do zapisu została pomyślnie zarezerwowana. Jedynym sposobem aby mieć pewność, że dane zostały zapisane jest wywołanie fsync(2) po skończeniu zapisywania wszystkich danych przez write().ZOBACZ TAKŻE¶
close(2), fcntl(2), fsync(2), ioctl(2), lseek(2), open(2), pwrite(2), read(2), select(2), writev(2), fwrite(3)O STRONIE¶
Angielska wersja tej strony pochodzi z wydania 3.40 projektu Linux man-pages. Opis projektu oraz informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.TŁUMACZENIE¶
Autorem polskiego tłumaczenia niniejszej strony podręcznika man jest Artur Kruszewski <mazdac@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ą 3.40 oryginału.2010-08-29 | Linux |