1

私はいくつかのコードを持っています。そこでは(通常の) にリダイレクトstdoutしてから元に戻します。これは、間にコードがある限り問題なく動作します。スクリプトを呼び出して実行すると、実行の最後に が削除されることがわかります。(呼び出されているスクリプトには名前がなく、何も実行されません)スクリプトが実行されているに書かれていることがわかります。logfiledup, open, and dup2stdoutCsystem()shell/perllogfilelogfileunlinklogfile

コードブロックは次のようになります。

 /redirect-stdout-to-logfile/
  system(scripts);
  /reset-stdout/

stdoutへのすべてのメッセージを にキャプチャしたいlogfile。さらにデバッグするためのヘルプ、またはヒントは大歓迎です。

4

1 に答える 1

1

ソースコードがないと、何が問題なのかを判断するのは困難です。

を呼び出す前に、「元に戻す」stdoutが完了していないようですsystem()

私の頭に浮かぶのは、外部プログラムを呼び出すときにプロセスが保持するファイル記述子を認識しているためではexecなく、ファミリを使用することです。(ただし、この場合、ファイル記述子は閉じられることを意図しています。)systemexec

于 2012-04-29T17:53:35.687 に答える