WRITE(2)

名前
write - ファイル・ディスクリプター(file descriptor)に書き込む

書式
#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t count);

説明
write は buf で示されるバッファーから最大 count バイトまでをファイル・ディスクリプター fd によって参照されるファイルへと書き込む。 POSIX は write() が行なわれた後に実行した read() が 新しいデータを返すことを要求している。全てのファイル・システム (file system)が POSIX 準拠ではないことに注意すること。

返り値
成功した場合には、書き込まれたバイト数が返される(ゼロは何も書き込まれな かったことを示す)。 エラーならば -1 が返され、errno が適切に設定 される。もし count がゼロでファイル・ディスクリプターが通常のファイル (regular file)を参照していた場合は、他に何の影響もなく 0 が返される。 特殊ファイルの場合には、結果に互換性はない。

エラー

EBADF
    fd が有効なファイル・ディスクリプターでないか書き込みのためにオープン (open)されていない。

EINVAL
    fd が書き込みが不適切なオブジェクト(object)を参照している。

EFAULT
    buf がアクセス可能なアドレス空間(address space)の外にある。

EPIPE
    fd がパイプ(pipe)かソケット(socket)に接続されており、その反対側がクローズ (close)されている。これが発生した場合には、書き込み行なうプロセスは SIGPIPE シグナル(signal)を受ける。もしこのシグナルを捕獲(catch)、禁止(block)、 無視(ignore)している場合に EPIPE エラーが返される。

EAGAIN
    非停止(non-blocking) I/O が O_NONBLOCK を使用して選択されており、 fd に接続されたソケットまたはパイプにすぐにデータが書き込める だけの十分な空きがない。

EINTR
    何のデータも書かない間にシグナルによって割り込まれた(interrupt)。

ENOSPC
    fd によって参照されるファイルを含むデバイス(device)に十分な空きがない。

EIO inode の修正中に低レべル(low-level) I/O エラーが発生した。

fd に接続されたオブジェクトによっては他のエラーが起こるかもしれない。

準拠
SVID, AT&T, POSIX, X/OPEN, BSD 4.3

関連項目
open(2), read(2), fcntl(2), close(2), lseek(2), select(2), ioctl(2), fsync(2), fwrite(3).