• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:_popen() のエラー取得)

_popen()のエラー取得方法

このQ&Aのポイント
  • _popen()を利用してWindowsNT/2000でコマンドを実行している際に、通常のメッセージは取得できるが、エラーメッセージが取得できない場合の対処方法について教えてください。
  • 現在のソースコードには、_popen()を使って"dir b:"コマンドを実行しています。しかし、エラーメッセージが取得できず、正常なメッセージのみが表示されます。
  • _popen()関数を使用してコマンドを実行する際に、エラーメッセージも取得する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1です。 URLが長すぎて上手くリンクできないようなので、ここに書き出します。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp

w0a15455
質問者

お礼

ありがとうございました。 サンプル見ながらやってみます。

その他の回答 (1)

回答No.1

「通常のメッセージは取得出来るのですが、エラーメッセージが取得出来ません。」 とおっしゃっているのは、"dir b:"を実行しているコマンドプロセッサが吐き出す(元々は"dir b:"が吐き出す)標準出力はfpから読み取れるのに、標準エラー出力はfpから読み取れない、ということですね? それは、_popen()の仕様ですね。_popen()を使う限りどうしようもないことと納得するしかないと思います。 さて、どうしましょう? ご自身で、CreateProcess()やCreatePipe()などを駆使して、親プロセスと子プロセス(こいつが"dir b:"を実行する)の間に標準出力に接続されたパイプと標準エラー出力に接続されたパイプを作成するしか解はないものと思います。 下記URLはMSDNの一部であり、標準入出力の接続の例になっていますが、これを応用して標準エラー出力を接続すればよいものと思います。 参考まで。

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_i
w0a15455
質問者

お礼

ありがとうございました。 サンプル見ながらやってみます。

関連するQ&A