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

COMMENTS