プログラムと情報をやりとりするときのファイルシステムへのアクセスを防止する[閉じる]

プログラムと情報をやりとりするときのファイルシステムへのアクセスを防止する[閉じる]

システムプログラムを数万回呼び出すメインスクリプトを作成しました。デフォルトスクリプトは、呼び出されるたびにプログラムに入力ファイルを生成して提供します。完了すると、プログラムは基本スクリプトから読み取ることができる出力ファイルを生成します。プログラムが実行されると:program inputFile outputFile

デフォルトのスクリプトは遅く実行されますが、これは実行中に発生する大量のI / 0オーバーヘッドが原因であると考えられますprogram

ディスクに書いたり読んだりせずにプログラムを実行できますか?

inputFileと両方に複数outputFile行を含めることができます。プログラムの内部構造は変更される可能性がありますが、私はそうしたくありません。残念ながら、他の場所では関連するアドバイスを見つけることができませんでした。

答え1

これはスクリプトのペアによって異なりますprogram。ファイルを何度も処理する必要がある複雑な作業を行うと、運が悪くなる可能性があります。 (私たちはこれを「ゼロ」と呼びます。)

まず、名前付きファイルの代わりに標準出力に出力を書き込むようにプログラムに直接的かつ明示的に指示できることを確認してください。一部のプログラムは、ダッシュ()のみを含む引数を-適切な標準入力または標準出力として解釈します。だから試してみてください

プログラム入力ファイル - |あなたの処理

/dev/stdout次に、出力ファイル名と同じようにしてください。

プログラム入力ファイル/ dev / stdout |あなたの処理

第三に、名前付きパイプを試してみてください。

myFifo=$(mktemp)
プログラム入力ファイル "$myFifo"&
あなたの処理<"$myFifo"
rm "$myFifo"

関連情報