2012-04-29 15 views
1

logfile(通常はdup, open, and dup2)にリダイレクトしてから、stdoutに戻すコードがあります。私がsystem()を呼び出してshell/perlスクリプトを実行すると、Cコード がある限り、これは問題なく動作します。実行終了時にlogfileが削除されています。 (呼び出されているスクリプトにはlogfileという名前はなく、unlinkはしません) logfileと書かれていて、というスクリプトが実行されているのがわかります。標準出力をリダイレクトするときにログファイルが削除されました

コードブロックは、このようなものです:

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

私はlogfilestdoutにすべてのメッセージをキャプチャしたいです。 さらにデバッグするのに役立つ、またはヒントを大いに感謝します。

答えて

1

ソースコードがないと間違ったことを伝えるのは難しいです。

あなたのあなたはsystem()を呼び出す前stdoutが完了していない「バック戻す」ようです。

_は、外部プログラムを呼び出すときにプロセスが保持するファイル記述子を認識しているため、systemの代わりにexecファミリを使用しています。 (この場合、ファイル記述子は閉じようとしていますが)

関連する問題