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.
讀 操 作 阻 塞 ,但 使 用 O_NONBLOCK 指 定 了 非 阻 塞 式 輸 入 輸 出 .
信 號 中
斷 . fd 指 向 的 文 件 所 在 的 設 備 無 可 用 空 間 . 當 編 輯 一 個 節 點 時 發 生 了 底 層 輸 入 輸 出 錯 誤 . 可 能 發 生 了 其 他 錯 誤 ,取 決 於 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 [AT] 263.net > [中 文 版 最 新 更 新 ]2002.02.07 《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :跋本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh |