.\" 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 7 2016-12-12 "Linux" "Linux Programmer's Manual" .SH NAME fifo \- 先進先出的特殊檔案, 命名管道 .SH "描述" 一個先進先出(FIFO)的特殊檔案(一個命名管道)類似一個管道,但它是作為檔案系統的 一部分來訪問的。 可以同時有多個程序開啟它進行讀寫。當程序間透過 FIFO 交換資料時,核心會在其內部傳送 所有資料,而不會寫入檔案系統。即,FIFO 特殊檔案在檔案系統中沒有任何內容; 檔案系統中的檔案條目只是作為一個參照點而已,使得程序可以用檔案系統中的一個名字 對其進行訪問。 .PP 核心會為至少有一個程序打開了的 FIFO 特殊檔案維護單獨一個管道物件。 在資料經由 FIFO 傳輸之前,FIFO 的兩端(讀和寫)必須同時開啟。 一般來說,開啟 FIFO 的行為會阻塞,直至另一端也被開啟。 .PP 一個程序可以使用非阻塞模式開啟一個 FIFO。這種情況下,即使寫端沒有開啟, 開啟讀端還是會成功。但是,如果讀端沒有開啟,開啟寫端會失敗,並且得到 一個 .B ENXIO (裝置或地址不存在)。 .PP 在 Linux 下,不管是阻塞還是非阻塞模式,開啟一個 FIFO 用作同時讀寫都會成功。 POSIX 對於這種情況未進行定義。這個可以用來在讀端不可用的情況下開啟寫端。 一個程序在同時用同一個 FIFO 的兩端來實現自己和自己通訊的時候要特別小心, 應避免出現死鎖。 .SH "註釋" 當一個程序企圖向讀端沒有開啟的 FIFO 寫資料的時候,程序會收到一個 .B SIGPIPE 訊號。 FIFO 特殊檔案可以用 .BR mkfifo (3) 來建立,並且 .IR "ls -l" 會對其新增一個特殊標記“p”進行指示。 .SH "參見" .BR mkfifo (1), .BR open (2), .BR pipe (2), .BR sigaction (2), .BR signal (2), .BR socketpair (2), .BR mkfifo (3), .BR pipe (7) .SH "跋" 本頁面原英文版是 Linux .I man-pages 專案 4.09 版的一部分。 如需瞭解這個專案的描述、彙報漏洞的相關資訊及本頁面的最新版本, 請訪問 \%https://www.kernel.org/doc/man\-pages/. .br 本頁面中文版由中文 man 手冊頁計劃提供。 .PP 翻譯人員:Boyuan Yang <073plan@gmail.com> .br 獲取日期:2016-12-12 .br 翻譯日期:2016-12-16 .br .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR