Manpages

NAME

fifo − 先 進 先 出 的 特 殊 檔 案 , 又 名 管 道

描 述 (DESCRIPTION)

一 個 FIFO 特 殊 檔 案 (又 名 管 道 ) 同 管 道 線 相 似 , 但 是 它 是 作 為 檔 案 系 統 的 一 部 分 訪 問 的 . 可 以 有 多 個 進 程 打 開 它 以 供 讀 寫 . 當 進 程 通 過 FIFO 交 換 數 據 的 時 候 , 核 心 在 內 部 傳 送 所 有 數 據 而 不 會 把 它 寫 入 檔 案 系 統 , 也 就 是 說 FIFO 特 殊 檔 案 在 檔 案 系 統 中 沒 有 任 何 內 容 , 檔 案 系 統 項 只 是 作 為 進 程 可 以 用 檔 案 系 統 中 的 一 個 名 字 來 訪 問 管 道 的 一 個 參 照 點 .

核 心 會 為 至 少 有 一 個 進 程 打 開 了 的 FIFO 特 殊 檔 案 維 護 並 且 也 只 維 護 一 個 管 道 對 象 . 在 數 據 傳 給 FIFO 之 前 , FIFO 的 兩 端 (讀 和 寫 ) 必 須 同 時 打 開 . 一 般 來 說 打 開 FIFO 會 阻 塞 直 至 另 一 端 也 打 開 .

一 個 進 程 可 以 以 非 阻 塞 模 式 打 開 一 個 FIFO. 這 種 情 況 下 , 即 使 寫 端 沒 有 打 開 , 打 開 讀 端 還 是 會 成 功 , 但 是 , 如 果 讀 端 沒 有 打 開 , 打 開 寫 端 會 失 敗 , 並 且 得 到 一 個 ENXIO (設 備 或 地 址 不 存 在 ).

在 Linux 下 , 不 管 是 阻 塞 還 是 非 阻 塞 模 式 , 打 開 一 個 FIFO 用 作 讀 和 寫 都 會 成 功 . POSIX 關 於 這 種 情 況 沒 有 定 義 . 這 個 可 以 用 來 在 讀 端 沒 有 打 開 的 情 況 下 打 開 寫 端 . 一 個 進 程 在 同 時 用 FIFO 的 兩 端 來 和 自 己 通 信 的 時 候 要 特 別 注 意 以 防 死 鎖 .

注 意 (NOTES)

當 一 個 進 程 企 圖 向 讀 端 沒 有 打 開 的 FIFO 寫 數 據 的 時 候 , 進 程 會 收 到 一 個 SIGPIPE 信 號 . FIFO 特 殊 檔 案 可 以 用 mkfifo(3) 來 創 建 並 且 ls -l 會 給 它 一 個 特 殊 的 標 記 .

參 見 (SEE ALSO)

mkfifo(3), mkfifo(1), pipe(2), socketpair(2), open(2), signal(2), sigaction(2)

[中 文 版 維 護 人 ]

唐 友 <tony_ty [AT] 263.net>

[中 文 版 最 新 更 新 ]

2001/10/9

[中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 ]

http://cmpp.linuxforum.net