xenial (2) read.2.gz

Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       read - ファイルディスクリプタから読み込む

書式

       #include <unistd.h>

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

説明

       read()  はファイルディスクリプタ (file descriptor)  fd から最大 count バイトを buf で始まるバッファーへ読
       み込もうとする。

       seek に対応しているファイルでは、read  は現在のファイルオフセットから行われ、ファイルオフセットは読み込ん
       だバイト数分だけ進められる。現在のファイルオフセットがファイル末尾かそれより先の場合は、読み出しは行われ
       ず、 read() は 0 を返す。

       count が 0 の場合、 read() は以下で説明するエラーを検出する場合がある。  どのエラーもなかった場合、もしく
       は read() がエラーのチェックを行わない場合、 count が 0 で呼び出された read() は 0 を返し、何も行わない。

       countSSIZE_MAX より大きければ、結果は規定できない。

返り値

       成功した場合、読み込んだバイト数を返す  (0 はファイルの終りを意味する)。 ファイル位置はこの数だけ進められ
       る。 この数が要求した数より小さかったとしてもエラーではない; 例えば今すぐには実際にそれだけの数しかない場
       合  (ファイルの最後に近いのかも  しれないし、パイプ (pipe) や端末 (terminal) から読み込んでいるかもしれな
       い) や read()  がシグナル (signal) によって割り込まれた場合にこれは起こりえる。 エラーの場合は、-1 が返さ
       れ、 errno が適切に設定される。この場合はファイル位置が変更されるかどうかは 不定である。

エラー

       EAGAIN ファイルディスクリプタ  fd  がソケット以外のファイルを参照していて、  非停止  (nonblocking) モード
              (O_NONBLOCK) に設定されており、読み込みを行うと停止する状況にある。

       EAGAIN または EWOULDBLOCK
              ファイルディスクリプタ fd がソケットを参照していて、非停止 (nonblocking) モード (O_NONBLOCK)  に設
              定されており、読み込みを行うと停止する状況にある。 POSIX.1-2001 は、この場合にどちらのエラーを返す
              ことも認めており、 これら 2 つの定数が同じ値を持つことも求めていない。  したがって、移植性が必要な
              アプリケーションでは、両方の可能性を 確認すべきである。

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

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

       EINTR  何のデータも読み込まないうちにシグナルに割り込まれた。 signal(7)  参照。

       EINVAL fd は読み込みに適していないオブジェクトを参照している。 もしくは、ファイルが O_DIRECT フラグを指定
              してオープンされているが、 buf に指定されたアドレス、  count  に指定された値、  現在のファイルオフ
              セットのいずれかの アラインメントが不適切である。

       EINVAL fdtimerfd_create(2)  の呼び出しで作成されたが、 read()  に間違ったサイズのバッファが渡された。
              さらなる情報は timerfd_create(2)  を参照のこと。

       EIO    I/O エラー。これは例えばプロセスがバックグランド・プロセスグループで、それを制御している端末から読
              み込もうとし、 SIGTTIN が無視 (ignore) または禁止 (blocking) されている場合や、 そのプロセスグルー
              プが孤立 (orphan) している場合に起こる。 またディスクやテープを読んでいる時に低レベル  I/O  エラー
              が発生した場合にも起こる。

       EISDIR fd がディレクトリを参照している。

       fd が接続しているオブジェクトによっては他のエラーも起こりえる。 POSIX では、 いくらかのデータを読んだ後に
       割り込みが起こった場合、 read()  は (errnoEINTR を設定して) -1 を返してもよいし、  既に読み込んだバイ
       ト数を返してもよい。

準拠

       SVr4, 4.3BSD, POSIX.1-2001.

注意

       NFS において。少量のデータを読み込む場合、最初の時のみにタイム スタンプが更新され、続くコールでは更新され
       ないだろう。 これはクライアント側で属性のキャッシングを行なうためである。 なぜならば、もし全ての NFS クラ
       イアントが  st_atime (最終ファイルアクセス時刻)  の更新をサーバーに送らず、クライアント側でキャッシュを読
       むことに満足して いれば、サーバー側での read は発生しないので st_atime の更新は行なわれからだ。 UNIX の方
       式では、クライアント側の属性のキャッシングを無効にすることで、 これを得ることができる。しかしほとんどの状
       況ではこれは続くサーバーの 負荷を増加させ、パフォーマンスの低下をもたらす。

関連項目

       close(2), fcntl(2), ioctl(2), lseek(2), open(2), pread(2), readdir(2), readlink(2), readv(2),  select(2),
       write(2), fread(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。