0

親プロセスが lsf/vnc のような分散ファーム システムでジョブを起動するアプリケーションが 1 つあります。ここで私が望むのは、ジョブ launch のいずれかによってそれぞれのログにエラーが報告されたときはいつでも、エラーを親プロセスのメイン stdout 画面にリダイレクトする必要があることです。各ジョブのログを個別に監視する必要がないようにします。コードでパイプ/セマフォを使用したことはありませんが、必要に応じて学習できます。

効率的な解決策を提案してください。Linux/Solaris プラットフォームで作業しています。

ありがとう

4

3 に答える 3

0

サブプロセスの起動方法に応じて、標準ハンドルを設定する方法が異なります。

一般に、stderrハンドルをstdoutハンドルと同じに設定する必要があります。

これは、あなたが言及する「ログ」とは何の関係もないことを覚えておいてください。それはあなたの主題が言うことについてです(stderrをリダイレクトします)。

于 2012-07-05T09:23:53.510 に答える
0

子の stderr を親の stdout と同じにしたい場合は、stdout に関連付けられた stderr を使用して親を起動するだけでよい場合があります。cmd親を起動するコマンドの場合は、次を試してください。

$ cmd 2>&1
于 2012-07-05T16:16:40.743 に答える
0

子プロセスのSTDERRを目的のファイル記述子に複製するには、おそらくdup2()ライブラリ呼び出しを使用する必要があります。たとえば、親プロセスによって前に開かれ、 fork( )。「dup2」呼び出しの manula ページを読んでみてください。

于 2012-07-05T20:17:37.893 に答える