プロセス間通信##のLinux#パイプ(パイプ) - 名前付きパイプFIFO

名前付きパイプ(名前付きパイプ)もFIFOキュー(FIFO)として知られている、特別なパイプであるファイルシステムに存在しています。名前付きパイプとパイプは非常に似ていますが、それ自身の重要な特徴があります。

  • 名前付きパイプは、相同二つのプロセスに限定されるものではなく、2つのプロセス間の任意の通信に使用することができます。
  • ファイルシステムに格納されている特殊なファイルとして名前付きパイプではなく、カーネルイメージパイプラインに格納されます。名前付きパイプを使用するプロセスの終了後に、名前付きパイプは、まだそうでない場合は、名前付きパイプが離れて行くことはありません、あなたがそれらを削除しない限り、ファイルシステム内に存在しています。

名前付きパイプは、2つのプロセス間のデータの双方向伝送を使用する場合、名前付きパイプなどのパイプラインのみ、データの一方向の伝送のために使用することができ、双方向の名前付きパイプを使用することが推奨されます。

名前付きパイプを作成するには、コマンドラインまたはのmknodコマンドではmkfifo:

int mkfifo(const char *pathname, mode_t mode);

 

  • パス名:文字列ポインタは、名前付きパイプのファイルパスを格納するために使用されます。
  • モード:ファイルを作成するために、指定されたアクセス権を表すために使用されます。S_IFIFO | 0666
  • 成功すると0を返し、-1を返し、コールが失敗した場合。
     
int mknod(char *pathname, mode_t mode, dev_t dev);
  • パス名:文字列ポインタは、名前付きパイプのファイルパスを格納するために使用されます。
  • モード:ファイルを作成するために、指定されたアクセス権を表すために使用されます。S_IFIFO | 0666
  • 着信0:00 S_IFCHRまたはS_IFBLKたときに、ファイルが唯一のデバイス番号,: dev_tのための一般的なファイルの種類を作成します。名前付きパイプを作成することができた場合、0を渡す第三引数devがファイルがデバイスファイルではないことを示しています。
  • 成功すると0を返し、-1を返し、コールが失敗した場合。

 

この時点で、さんが再び3つのパイプラインの違いを確認しましょう

  • 匿名パイプPIPE:カーネルに保存されている、唯一の親と子または兄弟プロセス間で使用することができます。
  • 標準的な流れの導管のための:匿名パイプパイプパッケージのシリーズ。ファイルストリームを返します。
  • FIFO名前付きパイプ:ファイルシステムに格納されているファイルの特殊なタイプは、多くのプロセス間で通信することができますが関連していません。

 

公開された170元の記事 ウォンの賞賛207 ビュー459万+

おすすめ

転載: blog.csdn.net/xiaoting451292510/article/details/103730994