こんにちは。
現在の状況です。
・アプリケーションA,Bがあります。
・BはAの中から、『CreateProcess』によって起動されます。
・AはBが終了するまで、『WaitForSingleObject』で待機してます。
・Bが終了したら、Aの処理が再開します。
ここで、Bが正常終了したか、異常終了したのかが、知りたいのです。
その結果によってAの処理を振り分ける必要があります。
なにかBの終了ステータスみたいなのを取得する関数は、あるのでしょうか?
また、『CreateProcess』『WaitForSingleObject』を必ず使用する必要は無いので、他の良い方法がありましたら、教えていただけたらと思ってます。
最終手段として、アナログですが、Bが終了する時、どっかにファイルを作成して、Aがソレを監視して存在してたら正常、存在してなかったら異常と、扱うようにしようかなと思います(それぐらいしか浮かびません)。
類似スレ
GetExitCodeProcessで、例外か正常終了か?
http://forums.belution.com/ja/vc/000/100/53s.shtml
環境を報告しますと
WinXP Pro Ver2002 SP2
VC++ 6.0 SP6
です。
リンク先拝見しましたが、ちっと意味合いが違ってました。
たぶん、自分の説明がおかしかったのだと思います。
たとえば、Bが、ファイルの存在をチェックするアプリとします。
ファイルが存在したら、Aにtureを返したい。
ファイルが存在しなかったら、Aにfalseを返したい
と、言うことです。
まるまるアプリひとつを、関数みたく扱いたいのです。
Aはどういうアプリになっているんでしょうか?
普通に
int main()
{
// ファイルあるがあったら
if ( 〜〜〜〜〜 )
return 0;
return -1;
}
というようなつくりになっていれば、GetExitCodeProcessで結果が取れますよ。
>・プロセスの main または WinMain 関数の戻り値。
また、結果をstdoutに出力して(printf等で出力)、パイプでその結果を取得するとか。
どういうアプリとは、どういうアプリのことを言ってるのでしょう?
>Aはどういうアプリになっているんでしょうか?
ごめんなさい。Bのことです。
>どういうアプリとは、どういうアプリのことを言ってるのでしょう?
コンソールアプリか、Windowsアプリか?
main または WinMain 関数で、特定のの戻り値を返すのか?
結果がstdoutに出力されるのか?
>コンソールアプリか、Windowsアプリか?
WindowsアプリでMFCを使用してます。EXEです。
>main または WinMain 関数で、特定のの戻り値を返すのか?
WinMainを使用してますが、隠蔽されていますよね?
戻り値を返すようにできるのでしょうか?
>結果がstdoutに出力されるのか?
stdoutは使用していません。
>WinMainを使用してますが、隠蔽されていますよね?
>戻り値を返すようにできるのでしょうか?
CWinApp::ExitInstance の戻り値じゃないの?
CWinApp::ExitInstanceから取得できました。
ありがとございました。
解決しました。
ツイート | ![]() |