fifoファイルとは?初心者にもわかる名前付きパイプの基礎と実践ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
fifoファイルとは?初心者にもわかる名前付きパイプの基礎と実践ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


fifoファイルとは何か

fifoファイル とは 名前付きパイプ と呼ばれる特別なファイルの一種です。パイプはプロセス間の通信路であり、あるプロセスが書き込んだデータを別のプロセスが読み取る仕組みです。名前付きパイプはファイルシステム上に名前があり、通常のファイルのように長期保存するためではなく、データをストリームとして受け渡すために使われます。First In First Out の性質でデータが流れ、先に入ったデータが先に出ていくのが基本的な挙動です。

fifoファイルは特定の用途に限られます。主に

・異なるプロセス間でデータを受け渡すとき

一方がデータを送信、もう一方が受信する形を取りたいとき

など、プログラム同士の協調動作を実現する際に使われます。データはファイルに貯蔵されず、カーネルのバッファを経由して入出力が行われます。

fifoファイルと通常のファイルの違い

通常のファイルはデータを長期的に保存する目的で作成されます。一方で fifoファイルは“データを蓄積せず流すための道”です。つまり

・読み取りと書き込みは別々のプロセスで行う

・データは直ちに一方へ渡され、通常はファイルとして終端に達しません

・書き込み側が待機状態になることがあり、読み取り側が準備できていないとデータは転送されません

といった特徴があります。これにより同時に複数のプログラムを組み合わせて動かす際の IPC(プロセス間通信)が非常にシンプルになります。

fifoファイルの作成と基本的な使い方

fifoファイルを作成するには mkfifo コマンドを使います。作成後は通常のファイルと同じようにパスを指定して操作しますが、機能としては“データを渡す道”を作るだけです。

作成の例

$ mkfifo mypipe

権限の確認と必要に応じた変更

$ ls -l mypipe

$ chmod 600 mypipe

読み取り側と書き込み側の基本的な使い方のイメージ

読み取り側の端末

$ cat mypipe

き込み側の端末

$ echo こんにちは > mypipe

この組み合わせで こんにちは が読み取り側に表示されます。ただしこの例は2つの端末または2つのターミナルを用意して同時に動かす必要があります。片方が待機していないとデータが流れず、どちらか一方が先に動くとデータの受け渡しが開始されます。

実践的な例

2つの端末を使って簡単な連携を作る場合を想定します。端末Aではデータを読み取る役目、端末Bではデータを書き込む役目です。

端末A

cat mypipe

端末B

echo あなたへ届くデータです > mypipe

このようにすると端末Aに あなたへ届くデータです が表示されます。

表で見る基本情報

コマンド用途
mkfifoFIFOファイルを作成する
ls -lファイルの権限やタイプを確認する
chmodファイルの権限を変更する
catFIFOファイルの読み取りまたは書き込みに使用する

注意点とヒント

・FIFOはデータを蓄えませんので、必ず読み手と書き手が別々に動作している必要があります。

・書き込みは読み取りが待機状態のときにのみ進み、読み取り側が待機していないとブロックします。

エラーを回避するためには存在する FIFO を事前に確認し、必要に応じて削除して再作成します。

よくある質問

Q FIFOファイルはどんな場面で使われますか

A 異なるプログラム同士のデータ受け渡しやリアルタイム性の高い連携が必要な場合に使われます。

Q 1つのプロセスだけで使えますか

A 通常は2つ以上のプロセスが関与します。書き手と読み手が別々のプロセスで動作するのが前提です。

まとめ

fifoファイルは名前付きパイプとして知られ、プロセス間のデータ転送を可能にする特別なファイルです。長期保存には向かず、データは流れるように渡されます。mkfifoで作成し、読み取り側と書き込み側を別々の端末やプロセスで動かすことが基本です。初心者のうちからこの仕組みを理解しておくと、プログラム間連携の設計がスムーズになります。


fifoファイルの同意語

FIFOファイル
First-In-First-Out の性質を持つ、名前付きパイプとして機能する特別なファイル。mkfifo で作成して、プロセス間でデータを順序通りにやり取りする用途に使われます。
名前付きパイプ
ファイルシステム上に名前を持つパイプのこと。読み書きでデータをやり取りでき、同じ名前を通じて複数のプロセス間で連携します。匿名パイプとは異なり、参照可能な点が特徴です。
FIFOパイプ
FIFO(先入れ先出し)機能を持つパイプの別称。データは入れた順番に取り出され、順序保証が必要な通信に適しています。
パイプファイル
パイプを表すファイル全般の呼び方。特に名前付きパイプを指すことが多く、データの受け渡しの窓口として使われます。
named pipe
英語表記での呼び名。『名前付きパイプ』のことを指し、UNIX系OSで広く使われる用語です。
先入れ先出しファイル
First-In-First-Out の意味を日本語で表現した別称。技術文脈では“FIFOファイル”の方が一般的ですが、意味は同じです。
mkfifoで作成されたファイル
mkfifo コマンドで作成される、名前付きパイプのファイル。データの受け渡し用の窓口として機能します。

fifoファイルの対義語・反対語

LIFO(Last In, First Out)
FIFOファイルの対義概念。データの出力順序が、最後に入れたものが最初に出るという原理で、スタックの動作に近い考え方。
後入先出
同様に、最後に入れた要素が最初に出る原理を指す語。FIFOファイルの反対の動作を説明する際に使われる表現。
スタック(Stack、LIFO)
データ構造の一種で、後入先出(LIFO)の性質を持つ。FIFOファイルとは用途も性質も異なるが、対義の動作を直感的に表す概念として挙げられる。
通常ファイル(正規ファイル、Regular file)
FIFOは特殊ファイルの一種だが、通常のファイル(正規ファイル)はデータを連続的に保存・読み出しできる一般的なファイル。用途・性質が異なる対概念として挙げられる。

fifoファイルの共起語

FIFO
First-In-First-Out の略。先入先出の性質を指し、FIFOファイルはファイルシステム上の名前付きパイプでデータを順番にやり取りします。
名前付きパイプ
ファイルシステム上に作成できる特殊ファイルで、プロセス間通信 IPC に用いられる入口・出口の役割を果たします。
mkfifo
FIFOファイルを作成するコマンド。パイプを名前付きにしてファイルシステム上に配置します。
パイプ
プロセス間のデータ連携を可能にする仕組み。匿名パイプと名前付きパイプ(FIFO)があります。
匿名パイプ
名前のないパイプで、通常は親子プロセス間のデータ転送に使われ、ファイルとしては存在しません。
IPC
Inter-Process Communication の略。プロセス間でデータを渡したり同期を取る技術の総称です。
データストリーム
連続したデータの流れ。パイプ経由でストリームとして送られます。
カーネルバッファ
カーネルがFIFOのデータを一時的に保持するバッファ。容量が不足するとブロックされます。
ロック動作
読み取り側や書き込み側がデータ待ちの状態になること。これにより順次性が保たれます。
特殊ファイル
FIFOはファイルシステム上の特殊ファイルの一種です。
ファイルシステム
ファイルを管理する階層。FIFOはこの中の特殊ファイルとして扱われます。
First-In-First-Out
FIFO の英語表現。最初に入れたデータが最初に出るという意味です。
読み取り/書き込み
FIFOを使うときは読み取り側と書き込み側が別プロセスになるのが基本です。
使い道
プロセス間のデータ共有や同期、情報の受け渡しに用いられます。
アクセス方法
FIFOファイルにはパスを指定してアクセスします。mkfifoで作成したファイルパスを通じて読み書きします。

fifoファイルの関連用語

FIFOファイル
ファイルシステム上の特殊ファイルで、プロセス間通信に使われる。データは先入先出(First-In-First-Out)の順で流れ、書き込み側と読み取り側の2つの端を持ちます。
名前付きパイプ
ファイル名で参照できるパイプ。複数のプロセスが同じパスを介して通信でき、mkfifo で作成します。
匿名パイプ
ファイルとしては存在せず、pipe() で作成されるパイプ。通常は同じ実行中の関連プロセス間で使います。
パイプ(Pipe)
プロセス間通信の基本手段。データを1方向に流すストリーム状の仕組みで、無名パイプと名前付きパイプの総称です。
mkfifo
名前付きパイプを作成するコマンドまたはシステムコール。作成後にファイル名を介して通信します。
S_IFIFO
POSIX のファイルタイプで、FIFO(名前付きパイプ)を示します。inode の種別として識別されます。
PIPE_BUF
1回の書き込みで原子性を保証される最大バイト数。POSIX 規定の最低値は512バイト、実装により4096バイト程度が多いです。
IPC(プロセス間通信)
複数のプロセス間でデータを交換する仕組みの総称。FIFO はそのうちの一つの方法です。
先入先出(FIFO)
データが最初に入った順に取り出される性質のこと。FIFOファイルではこの順序でデータが流れます。
読み取り端/書き込み端
FIFO にはデータを書き込む端と読み取る端があり、片方が開かれるともう片方が待機することがあります。
open/close
FIFO を開く(open)・閉じる(close)操作。ブロッキング動作を制御します。
特殊ファイル/ファイルタイプ
FIFO は通常のテキストファイルとは別の『特殊ファイル』として扱われ、inode によって管理されます。
inode
ファイルのメタ情報を格納するデータ構造。FIFO も inode に紐づく特別なファイルです。
権限(パーミッション
FIFO への読み取り・書き込みの権限はファイルのパーミッションで制御されます。
パイプ容量
カーネルが確保する内部バッファの容量。データはこのバッファに蓄えられ、読者が来るまで待つことがあります。
ブロックIO/ノンブロックIO
FIFO は通常ブロックモードで動作します。データがすぐに読めない場合、呼び出しは待機します。ノンブロックモードも設定可能です。
Unixドメインソケット
同一ホスト上のプロセス間通信に使われる別の IPC 手段。FIFO とは異なる特徴とAPIを持ちます。

fifoファイルのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16227viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2751viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1158viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1157viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1035viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1001viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
990viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
972viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
864viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
863viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
802viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
801viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
760viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
716viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
703viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
653viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
601viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
598viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
593viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
533viws

新着記事

インターネット・コンピュータの関連記事