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 <[email protected] >
2002.02.07
http://cmpp.linuxforum.net
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh