.\" This man page is Copyright (C) 1999 Claus Fischer. .\" Permission is granted to distribute possibly modified copies .\" of this page provided the header is included verbatim, .\" and in case of nontrivial modification author and date .\" of the modification is added to the header. .\" .\" 990620 - page created - aeb@cwi.nl .\" .TH FIFO 4 "20 Jun 1999" "Linux Man Page" "Linux Programmer's Manual" .SH NAME fifo \- 先進先出的特殊檔案, 又名管道 .SH "描述 (DESCRIPTION)" 一個 FIFO 特殊 檔案 (又名 管道) 同 管道線 相似, 但是 它是 作為 檔案 系統 的 一部分 訪問的. 可以 有 多個 進程 打開它 以供 讀寫. 當 進程 通過 FIFO 交換 數據 的時候, 核心 在內部 傳送 所有 數據 而 不會 把它 寫入 檔案 系統, 也就是說 FIFO 特殊 檔案 在 檔案 系統 中 沒有 任何 內容, 檔案 系統 項 只是 作為 進程 可以 用 檔案 系統 中的 一個 名字 來 訪問 管道 的 一個 參照點. .PP 核心 會 為 至少 有 一個 進程 打開 了的 FIFO 特殊 檔案 維護 並且 也只 維護 一個 管道 對象. 在 數據 傳給 FIFO 之前, FIFO 的 兩端 (讀 和 寫) 必須 同時 打開. 一般 來說 打開 FIFO 會 阻塞 直至 另一端 也 打開. .PP 一個 進程 可以 以 非阻塞 模式 打開 一個 FIFO. 這種 情況下, 即使 寫端 沒有 打開, 打開 讀端 還是 會 成功, 但是, 如果 讀端 沒有 打開, 打開 寫端 會 失敗, 並且 得到 一個 ENXIO (設備 或 地址 不存在). .PP 在 Linux 下, 不管 是 阻塞 還是 非阻塞 模式, 打開 一個 FIFO 用作 讀 和 寫 都會 成功. POSIX 關於 這種 情況 沒有 定義. 這個 可以 用來 在 讀端 沒有 打開 的 情況 下 打開 寫端. 一個 進程 在 同時 用 FIFO 的 兩端 來 和 自己 通信 的 時候 要 特別 注意 以防 死鎖. .SH "注意 (NOTES)" 當 一個 進程 企圖 向 讀端 沒有 打開 的 FIFO 寫 數據 的 時候, 進程 會 收到 一個 SIGPIPE 信號. FIFO 特殊 檔案 可以 用 .BR mkfifo (3) 來 創建 並且 .IR "ls -l" 會 給它 一個 特殊 的 標記. .SH "參見 (SEE ALSO)" .BR mkfifo (3), .BR mkfifo (1), .BR pipe (2), .BR socketpair (2), .BR open (2), .BR signal (2), .BR sigaction (2) .SH "[中文版維護人]" .B 唐友 \ .SH "[中文版最新更新]" .BR 2001/10/9 .SH "[中國Linux論壇man手冊頁翻譯計劃]" .BI http://cmpp.linuxforum.net