Manpages

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 [AT] 263.net >

[中 文 版 最 新 更 新 ]

2002.02.07

《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh