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@263.net>
[中文版最新更新]¶
2001/10/9
[中國Linux論壇man手冊頁翻譯計劃]¶
http://cmpp.linuxforum.net