Man page - fifo(7)

Packages contains this manual

Available languages:

en fr pt_BR es pl ja ru ro zh_TW zh_CN de

Manual

FIFO

NAME
描 述
註 釋
參 見


NAME

fifo - 先 進 先 出 的 特 殊 檔 案 , 命 名 管 道

描 述

一 個 先 進 先 出 ( FIFO) 的 特 殊 檔 案 ( 一 個 命 名 管 道 ) 類 似 一 個 管 道 , 但 它 是 作 為 檔 案 系 統 的 一 部 分 來 訪 問 的 。 可 以 同 時 有 多 個 程 序 開 啟 它 進 行 讀 寫 。 當 程 序 間 透 過 FIFO 交 換 資 料 時 , 核 心 會 在 其 內 部 傳 送 所 有 資 料 , 而 不 會 寫 入 檔 案 系 統 。 即 , FIFO 特 殊 檔 案 在 檔 案 系 統 中 沒 有 任 何 內 容 ; 檔 案 系 統 中 的 檔 案 條 目 只 是 作 為 一 個 參 照 點 而 已 , 使 得 程 序 可 以 用 檔 案 系 統 中 的 一 個 名 字 對 其 進 行 訪 問 。

核 心 會 為 至 少 有 一 個 程 序 打 開 了 的 FIFO 特 殊 檔 案 維 護 單 獨 一 個 管 道 物 件 。 在 資 料 經 由 FIFO 傳 輸 之 前 , FIFO 的 兩 端 ( 讀 和 寫 ) 必 須 同 時 開 啟 。 一 般 來 說 , 開 啟 FIFO 的 行 為 會 阻 塞 , 直 至 另 一 端 也 被 開 啟 。

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

在 Linux 下 , 不 管 是 阻 塞 還 是 非 阻 塞 模 式 , 開 啟 一 個 FIFO 用 作 同 時 讀 寫 都 會 成 功 。 POSIX 對 於 這 種 情 況 未 進 行 定 義 。 這 個 可 以 用 來 在 讀 端 不 可 用 的 情 況 下 開 啟 寫 端 。 一 個 程 序 在 同 時 用 同 一 個 FIFO 的 兩 端 來 實 現 自 己 和 自 己 通 訊 的 時 候 要 特 別 小 心 , 應 避 免 出 現 死 鎖 。

註 釋

當 一 個 程 序 企 圖 向 讀 端 沒 有 開 啟 的 FIFO 寫 資 料 的 時 候 , 程 序 會 收 到 一 個 SIGPIPE 訊 號 。

FIFO 特 殊 檔 案 可 以 用 mkfifo (3) 來 建 立 , 並 且 ls -l 會 對 其 新 增 一 個 特 殊 標 記 “p”進 行 指 示 。

參 見

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

本 頁 面 原 英 文 版 是 Linux man-pages 專 案 4.09 版 的 一 部 分 。 如 需 瞭 解 這 個 專 案 的 描 述 、 彙 報 漏 洞 的 相 關 資 訊 及 本 頁 面 的 最 新 版 本 , 請 訪 問 https://www.kernel.org/doc/man-pages/.
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。

翻 譯 人 員 : Boyuan Yang <073plan@gmail.com>
獲 取 日 期 : 2016-12-12
翻 譯 日 期 : 2016-12-16
中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh