0

小さな何かが欠けているかもしれませんが、POSIX (ダッシュ) 準拠の方法でこの構文を実現することは可能ですか?

$ ./myApp 2> stderr.txt 1> stdout.txt

ダッシュでは使用できないことはわかっていますが、使用する必要があります>&が、2>&1これはしたくありません。stdout に大量のデータが送られてきますが、それを解析して stderr を取得したくありません。非常に単純なものが欠けているように感じますが、指を置くことはできません...

現在、上記のコマンドを実行すると、標準出力 (3) が数行しか表示されませんが、標準エラー出力ファイルには表示され、標準出力は空です。また、グループ化のさまざまな方法を試しましたが、それでもうまくいきませんでした。何が起こっているのかわからない...

アップデート

これは、私が達成しようとしていることの完全な効果を見ることができるように、私が実行している実際のコマンドの形式です:

$ LD_PRELOAD=/usr/lib/libtcmalloc.so /usr/bin/time -p myApp -c -f inputFile 2> stderr 1> stdout

これは、() を使用してグループ化の複数のバリエーションを試したことを述べた場所です。また、実行可能ファイルmyAppはフォークしません。

このコマンドは機能すると思いましたが、そうではないことがわかりました。

$ LD_PRELOAD=/usr/lib/libtcmalloc.so /usr/bin/time -p (myApp -c -f inputFile) 2> stderr 1> stdout
4

1 に答える 1

0

コメントで答えたので投稿:

投稿した構文は正しい構文ですが、timeコマンドの出力から干渉が発生している可能性があります。試す

time -p sh -c 'LD_PRELOAD=/usr/lib/libtcmalloc.so command >stdout.txt 2>stderr.txt'
于 2011-09-27T20:02:08.313 に答える