データ(たとえば)を一時ファイルに送信すると、stdout
そのデータに対していくつかの操作が実行され(一時ファイルは一部のプロセスで使用されますstdin
)、一時ファイルが削除される可能性があります。
パイプは次のバリエーションです。特殊ファイル、大丈夫です。チェーンコマンドを一緒に実行します。あるプログラムの出力を別のプログラムの入力として使用します。
通常、通常のパイプはプロセスが終了した直後に削除されますが、名前付きパイプ(しばしば「FIFO」と呼ばれ、必ずしも100%正確ではない)は、プロセスが終了した後に特定のポイントまでアクティブになります。
私の質問
一時ファイルは使用後に削除できますが、名前付きパイプは削除されません。しかし、一時ファイルと通常のパイプ(または少なくとも匿名パイプ)の違いは何ですか?
修正する
私は「一時ファイル」が特別なファイルであると間違って考えましたが、通常のファイルではありません。異なる使用;パイプとの違いは、次のように定義されることです。特殊ファイルそして、1つの狭い目的(リンク)を持つ一方で、一時ファイルはリンク以外に使用することができますが、違いを説明するより「包括的な」方法があります。
答え1
名前付きパイプは、通常のファイル(またはデータに「ハンドル」を提供するネットワーク接続または他のすべて)が一時的である可能性があるかのように一時的にすることができます。つまり、一種の処理を容易にするためにスクリプトに設定できます。その後、スクリプトが終了する前に削除されます。これは「一時(名前付き)パイプ」になります。
名前付きパイプはファイルなので、名前付きパイプ(実際に一時的なもの)が一時ファイルであると考えることもできます。
しかし、人々が「ファイル」に言及するとき、これはほとんど常に「一般ファイル」(つまり、いくつかの説明を含む文書)を意味しますが、名前付きパイプはいいえ一般ファイル。
シェルのパイプは、|
あるユーティリティから別のユーティリティへのデータフローを提供するために使用され、パイプが使用され、もはや必要なくなった場合、シェルはそれに関連するすべてのリソースを解放するので一時的です。
最後に、パイプ(名前付きファイルと名前のないファイル)と一般ファイルは異なる目的で使用され、一時データを保存するために一般ファイルを使用する必要がある場合と名前付きパイプを使用してデータを別のプロセスに渡す必要がある場合がいつであるかを明確にする必要があります。