プログラムを実行し、ファイルからのすべての入力をリダイレクトし、stdout のすべての出力をファイルにリダイレクトする単純な bash スクリプトがあります。
stdoutリダイレクトなしでそれを実行すると、プログラムのすべてのprintfが正しい順序で端末に出力されます。stdout のリダイレクトを配置すると、それらの一部が失われ、それらの順序が混乱するように見えます。
#!/bin/bash
./myprog < commands > scriptOUT.txt
ここで、myprog はプログラムの実行可能ファイルです。commands は、このプログラムが実行に必要とする入力を含むファイルであり、scriptOUT.txt は、最後にすべての stdout で作成されるファイルです (これは決して起こりません)。
なぜこうなった?それを回避する方法はありますか?