Man page - read(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro zh_TW zh_CN de

Manual

READ

NAME
概 述
描 述
返 回 值
錯 誤 程 式 碼
兼 容 於
限 制
參 見
[中 文 版 維 護 人 ]
[中 文 版 最 新 更 新 ]
《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :


NAME

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

概 述

#include <unistd.h>

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

描 述

read() 從 檔 案 描 述 符 fd 中 讀 取 count 位 元 組 的 資 料 並 放 入 從 buf 開 始 的 緩 衝 區 中 .

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

返 回 值

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

錯 誤 程 式 碼

EINTR

在 讀 取 到 資 料 以 前 呼 叫 被 訊 號 所 中 斷 .

EAGAIN

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

EIO

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

EISDIR

fd 指 向 一 個 目 錄 .

EBADF

fd 不 是 一 個 合 法 的 檔 案 描 述 符 ,或 者 不 是 為 讀 操 作 而 開 啟 .

EINVAL

fd 所 連 線 的 物 件 不 可 讀 .

EFAULT

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

也 可 能 發 生 其 他 錯 誤 ,具 體 情 況 和 fd 所 連 線 的 物 件 有 關 . POSIX 允 許 read 在 讀 取 了 一 定 量 的 資 料 後 被 訊 號 所 中 斷 ,並 返 回 -1(且 errno 被 設 定 為 EINTR),或 者 返 回 已 讀 取 的 資 料 量 .

兼 容 於

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

限 制

在 NFS檔 案 系 統 中 ,讀 取 小 塊 資 料 僅 更 新 時 間 標 記 ,之 後 的 呼 叫 不 再 讀 取 伺 服 器 端 的 資 料 .這 是 因 為 客 戶 端 把 資 料 放 在 快 取 裡 . 由 於 大 多 數 情 況 下 不 存 在 NFS伺 服 器 向 客 戶 端 的 讀 操 作 , 所 以 NFS客 戶 必 須 將 更 新 時 間 標 記 的 操 作 放 在 伺 服 器 端 ,而 資 料 可 以 放 在 客 戶 端 的 快 取 裡 留 待 以 後 更 新 .UNIX也 可 以 停 用 客 戶 端 的 快 取 ,但 那 樣 的 話 大 多 數 情 況 下 會 導 致 伺 服 器 效 能 下 降 .

參 見

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

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

http://cmpp.linuxforum.net

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