Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Linuxのパイプラインパイプライン関数の構築方法

Linuxのパイプラインパイプライン関数の構築方法

  

pipeはLinuxシステムのパイプラインです。パイプラインメカニズムの本体はパイプ関数の呼び出しです。Linuxシステムでパイプ関数を構築する方法は?次の小シリーズでは、Linuxでパイプ関数を作成する方法を紹介します。それを見てみましょう。

主に親と子の間、または2つの兄弟のプロセス間で使用
名前なしパイプ●。 Linuxシステムでは、システムコールを通じて一方向の通信パイプラインを確立できます。この関係は、親プロセスによってのみ確立できます。したがって、各パイプは単方向であり、双方向通信が必要な場合は2本のパイプを確立する必要があります。パイプラインの両端のプロセスはパイプラインをファイルとして扱い、一方のプロセスはパイプラインへの書き込みを担当し、もう一方のプロセスはパイプラインからの読み込みを担当します。この送信は、「先入れ先出し」(FIFO)の規則に従う。

●名前付きパイプ

名前付きパイプは、親戚同士のコミュニケーションにしか使用できない名前なしパイプの欠点を解決するように設計されています。名前付きパイプは、実際のディスクメディアまたはファイルシステム(メモリ内だけではありません)上に作成された独自の名前のファイルです。また、どのプロセスもファイル名またはパス名でいつでもファイルにアクセスできます。名前付きパイプを実装するために、(先入れ先出しの原則に従って)新しいファイルタイプのFIFOファイルが導入されました。名前付きパイプを実装することは、実際にはFIFOファイルを実装することです。名前付きパイプが確立されると、その読み取り、書き込み、およびクローズの操作は通常のパイプの操作と同じになります。 FIFOファイルのinodeノードはディスク上にありますが、それは単なるノードであり、ファイルのデータはメモリバッファページにまだ存在しており、通常のパイプと同じです。

1.関数の説明

pipe(Build Pipeline):

1)ヘッダー#include "unistd.h"

2)関数を定義します。 Int pipe(int filedes [2]);

3)関数の説明:pipe()はパイプを作成し、パラメータfiledes配列からファイルディスクリプタを返します。

filedes [0]はパイプの読み込み側です。

filedes [1]はパイプの読み込み側です。

4)戻り値:成功すればゼロを返し、そうでなければ-1を返し、エラーの原因はerrnoに格納されます。

エラーコード:

EMFILEプロセスによってファイル記述子の最大数を使い果たしました。

ENFILEシステムに利用可能なファイル記述子がありません。

EFAULTパラメータfiledesの配列アドレスが無効です。
前12次合計2ページ

Copyright © Windowsの知識 All Rights Reserved