これら2つの「cat」コマンドの結果が異なるのはなぜですか?

これら2つの「cat」コマンドの結果が異なるのはなぜですか?

infileに特定のテキストが含まれていると仮定すると、次のコマンドセットを実行します。

実装する3<infile

猫-n<&3

猫-n<&3

catの最初のインスタンスはファイルの内容を表示しますが、2番目のインスタンスでは何もしません。なぜ違うの?

ベストアンサー1

同じコマンドのように見えますが、異なる理由は、最初のコマンドの結果としてシステムの状態が変わったためです。具体的には、最初のファイルはファイルcat全体を消費するため、2番目のファイルにはcat読み取る内容が残らず、すぐにEOF(ファイルの終わり)に達した後に終了します。

その理由は、両方の呼び出しでまったく同じファイル記述を使用しているためです(exec < infile作成し、ファイル記述子に割り当てたファイル記述を使用します)。開かれたファイル記述に関連するものの1つはファイルオフセットです。したがって、最初のものは最後にオフセットを維持しながらファイル全体を読み取り、2番目はファイルの最後から読み取ろうとしますが、読み取る内容が見つかりません。3catcat

おすすめ記事