Provided by: manpages-zh_1.5.1-3_all bug

NAME

       read - 在檔案描z符上執行讀操作

z
       #include <unistd.h>

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

yz
       read()    從檔案描z符    fd   中讀取   count   字節的數據並放入從   buf
       開始的緩沖區中.

       如果    count    為零,read()返回0,不執行其他任何操作.     如果    count
       大於SSIZE_MAX,那麼結果將不可預料.

^
       成幼阞藀^讀取到的字節數(為零表示讀到檔案描z符),                 此返回-
       檔案剩餘字節數制.當返回p於指定的字節數時
       並不意味著錯誤;這可能是因為當前可讀取的字節數小於指定的
       字節數(比如已經接近檔案結尾,或者正在從管道或者終端讀取數        據,或者
       read()被信號中斷).        發生錯誤時返回-1,並置      errno      為相應-
       .在這種情況下無法得知檔案偏移位置是否有變化.

~NX
       EINTR  在讀取到數據以前調用被信號所中斷.

       EAGAIN 使用 O_NONBLOCK 標誌指定了非阻塞式輸入輸出,但當前沒有數據可讀.

       EIO    輸入輸出錯誤.可能是正處於I景進程組進程試圖讀取其
              控制終端,但讀操作無效,或者被信號SIGTTIN所阻塞,
              或者其進程組是孤兒進程組.也可能執行的是讀磁碟或者
              磁帶機這樣的底層輸入輸出錯誤.

       EISDIR fd 指向一茈媬.

       EBADF  fd 不是一茼X法的檔案描z符,或者不是為讀操作而打開.

       EINVAL fd 所連接的對象不可讀.

       EFAULT buf 超出使用者可訪問的地址空間.

       也可能發生其他錯誤,具體情況和  fd  所連接的對象有關.   POSIX 允.B read
       在讀取了一定量的數據後被信號所中斷,並返回          -1(且          errno
       被設置為EINTR),或者返回已讀取的數據量.

e於
       SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3

制
       在NFS檔案系統中,讀取小塊數據僅更新時間標記,之後的調用
       不再讀取伺服器端的數據.這是因為客戶端把數據放在緩存裏.
       由於大多數情況下不存在NFS伺服器向客戶端的讀操作,
       所以NFS客戶必須將更新時間標記的操作放在伺服器端,而
       數據可以放在客戶端的緩存裏留待以後更新.UNIX也可以禁用
       客戶端的緩存,但那樣的話大多數情況下會導P伺服器性能下.

見
       close(2),  fcntl(2),  ioctl(2),  lseek(2),   readdir(2),   readlink(2),
       select(2), write(2), fread(3)

[]
       byeyear <love_my_love@263.net >

[]
       2002.02.02

mlinuxan:
       http://cmpp.linuxforum.net