WRITE(2)

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