私はしばらくこれにこだわっていますが、stdout を 2 つの異なる場所にリダイレクトすることは可能ですか? 練習用に独自のシェルを作成しており、現在、ps aux | wc -l
またはのようなコマンドを実行できますps aux | wc -l > output.file
。ただし、 を実行しようとするps aux > file.out | wc -l
と、2 番目のコマンドは最初のコマンドからの入力を受け取りません。
最後の例では、最初のコマンドが子プロセスで実行され、パイプの一端に出力されます。ロジックは次のようになります。
close(stdout);
dup2(fd[1], STDOUT_FILENO);
//If a file output is also found
filewriter = open(...);
dup2(filewriter, STDOUT_FILENO);
//Execute the command