Manpages

名 前

fifo − 先 入 先 出 特 殊 フ ァ イ ル 、 名 前 付 き パ イ プ

説 明

FIFO 特 殊 フ ァ イ ル (名 前 付 き パ イ プ )は パ イ プ に 似 て い る が 、 フ ァ イ ル シ ス テ ム の 一 部 に 関 連 付 け ら れ て い る 点 が 異 っ て い る 。 複 数 の プ ロ セ ス が 読 み 込 み や 書 き 込 み の た め に オ ー プ ン す る こ と が で き る 。 プ ロ セ ス が FIFO を 通 し デ ー タ を 交 換 す る 場 合 、 実 際 に そ れ を フ ァ イ ル シ ス テ ム に は 書 き 込 ま ず 、 カ ー ネ ル は 全 て の デ ー タ を 内 部 的 に 渡 す 。 こ の よ う に 、 FIFO 特 殊 フ ァ イ ル は フ ァ イ ル シ ス テ ム 上 に は 内 容 を 持 た な い の で 、 フ ァ イ ル シ ス テ ム の エ ン ト リ ー は プ ロ セ ス が そ の フ ァ イ ル シ ス テ ム 上 の 名 前 を 使 用 し て そ の パ イ プ に ア ク セ ス で き る よ う に 参 照 ポ イ ン ト を 提 供 し て い る に 過 ぎ な い 。 カ ー ネ ル は 、 少 な く と も 一 つ の プ ロ セ ス に よ っ て オ ー プ ン さ れ て い る FIFO 特 殊 フ ァ イ ル に つ い て 、 そ れ ぞ れ 一 つ の パ イ プ の み を 管 理 し て い る 。 デ ー タ が 渡 さ れ る 前 に そ の FIFO の 両 端 (書 き 込 み と 読 み 出 し )が オ ー プ ン さ れ て い な け れ ば な ら な い 。 通 常 、 FIFO を オ ー プ ン す る と 、 そ の 反 対 側 が オ ー プ ン さ れ る ま で 停 止 (block)さ せ ら れ る 。 プ ロ セ ス は FIFO を 非 停 止 (nonblocking)モ ー ド で オ ー プ ン す る こ と も で き る 。 こ の 場 合 、 読 み 込 み 専 用 で オ ー プ ン し た 場 合 に は 書 き 込 み 側 を 誰 も オ ー プ ン し て い な く て も 成 功 す る 。 書 き 込 み 専 用 で オ ー プ ン し た 場 合 は 反 対 側 が 既 に オ ー プ ン さ れ て い な け れ ば ENXIO (そ の よ う な デ バ イ ス ま た は ア ド レ ス は 存 在 し な い ) と い う エ ラ ー で 失 敗 す る 。

Linux で は 、 FIFO を 読 み 込 み と 書 き 込 み 両 用 に オ ー プ ン し た 場 合 、 停 止 、 非 停 止 の ど ち ら の モ ー ド で も 成 功 す る 。 POSIX で は こ の 場 合 の 動 作 は 定 義 さ れ て い な い 。 こ れ は 読 み 込 み 側 が い な い 時 に 書 き 込 み 用 に オ ー プ ン す る た め に 使 用 す る こ と が で き る 。 自 分 自 身 と 通 信 す る た め に 両 端 を 使 用 す る プ ロ セ ス は デ ッ ド ロ ッ ク を 避 け る た め に 非 常 に 注 意 深 く な け れ ば な ら な い 。

注 意

プ ロ セ ス が 、 反 対 の 読 み 込 み 側 が オ ー プ ン さ れ て い な い FIFO を 書 き 込 み の た め に オ ー プ ン し よ う と し た 場 合 、 そ の プ ロ セ ス に SIGPIPE シ グ ナ ル が 送 ら れ る 。

FIFO 特 殊 フ ァ イ ル は mkfifo(3) で 作 成 す る こ と が で き 、 ls −l で は フ ァ イ ル 種 別 'p' で 表 示 さ れ る 。

関 連 項 目

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

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。