Provided by: manpages-zh_1.6.3.2-1_all
NAME
write -在一個文件描述符上執行寫操作
概述
#include <unistd.h> ssize_t write(int fd, const void *buf, size_t count);
描述
write 向文件描述符 fd 所引用的文件中寫入 從 buf 開始的緩衝區中 count 字節的數據. POSIX規 定,當使用了write()之後再使用 read(),那麼讀取到的應該是更新後的數據. 但請注意並不是所有的 文件系統都是 POSIX兼容的.
返回值
成功時返回所寫入的字節數(若爲零則表示沒有寫入數據). 錯誤時返回-1,並置errno爲相應值. 若count爲零,對於普通文件無任何影響,但對特殊文件 將產生不可預料的後果.
錯誤代碼
EBADF fd 不是一個合法的文件描述符或者沒有以寫方式打開. EINVAL fd 所指向的對象不可寫. EFAULT buf 不在用戶可訪問地址空間內. EPIPE fd 連接到一個管道,或者套接字的讀方向一端已關閉.此時寫進程 將接收到 SIGPIPE 信號;如 果此信號被捕獲,阻塞或忽略,那麼將返回錯誤 EPIPE. EAGAIN 讀操作阻塞,但使用 O_NONBLOCK 指定了非阻塞式輸入輸出. EINTR 在寫數據以前調用被信號中斷. ENOSPC fd 指向的文件所在的設備無可用空間. EIO 當編輯一個節點時發生了底層輸入輸出錯誤. 可能發生了其他錯誤,取決於 fd 所連接的對象.
兼容於
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4文檔添加了以下錯誤代碼: EDEADLK, EFBIG, ENOLCK, ENOLNK, ENOSR, ENXIO, EPIPE,或者ERANGE. 對於SVr4有可能在寫入部分數據時發生中斷並返 回EINTR.
參見
open(2), read(2), fcntl(2), close(2), lseek(2), select(2), ioctl(2), fsync(2), fwrite(3)
[中文版維護人]
byeyear <love_my_love@263.net >
[中文版最新更新]
2002.02.07
《中國linux論壇man手冊頁翻譯計劃》:
http://cmpp.linuxforum.net
跋
本頁面中文版由中文 man 手冊頁計劃提供。 中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh