終了ステータスの取得する方法はありますか?

解決


はじめ  2006-09-01 17:10:22  No: 62889  IP: 192.*.*.*

こんにちは。

現在の状況です。
・アプリケーションA,Bがあります。
・BはAの中から、『CreateProcess』によって起動されます。
・AはBが終了するまで、『WaitForSingleObject』で待機してます。
・Bが終了したら、Aの処理が再開します。

ここで、Bが正常終了したか、異常終了したのかが、知りたいのです。
その結果によってAの処理を振り分ける必要があります。
なにかBの終了ステータスみたいなのを取得する関数は、あるのでしょうか?

また、『CreateProcess』『WaitForSingleObject』を必ず使用する必要は無いので、他の良い方法がありましたら、教えていただけたらと思ってます。

最終手段として、アナログですが、Bが終了する時、どっかにファイルを作成して、Aがソレを監視して存在してたら正常、存在してなかったら異常と、扱うようにしようかなと思います(それぐらいしか浮かびません)。

編集 削除
Blue  2006-09-01 17:17:25  No: 62890  IP: 192.*.*.*

類似スレ
GetExitCodeProcessで、例外か正常終了か?
http://forums.belution.com/ja/vc/000/100/53s.shtml

編集 削除
はじめ  2006-09-01 17:17:26  No: 62891  IP: 192.*.*.*

環境を報告しますと

WinXP Pro Ver2002 SP2
VC++ 6.0 SP6

です。

編集 削除
はじめ  2006-09-01 17:52:24  No: 62892  IP: 192.*.*.*

リンク先拝見しましたが、ちっと意味合いが違ってました。
たぶん、自分の説明がおかしかったのだと思います。

たとえば、Bが、ファイルの存在をチェックするアプリとします。

ファイルが存在したら、Aにtureを返したい。
ファイルが存在しなかったら、Aにfalseを返したい

と、言うことです。
まるまるアプリひとつを、関数みたく扱いたいのです。

編集 削除
Blue  2006-09-01 18:01:31  No: 62893  IP: 192.*.*.*

Aはどういうアプリになっているんでしょうか?

普通に

int main()
{
     // ファイルあるがあったら
     if ( 〜〜〜〜〜 )
         return 0;

    return -1;
}

というようなつくりになっていれば、GetExitCodeProcessで結果が取れますよ。
>・プロセスの main または WinMain 関数の戻り値。


また、結果をstdoutに出力して(printf等で出力)、パイプでその結果を取得するとか。

編集 削除
はじめ  2006-09-01 18:10:33  No: 62894  IP: 192.*.*.*

どういうアプリとは、どういうアプリのことを言ってるのでしょう?

編集 削除
Blue  2006-09-01 18:52:54  No: 62895  IP: 192.*.*.*

>Aはどういうアプリになっているんでしょうか?
ごめんなさい。Bのことです。

>どういうアプリとは、どういうアプリのことを言ってるのでしょう?
コンソールアプリか、Windowsアプリか?
main または WinMain 関数で、特定のの戻り値を返すのか?
結果がstdoutに出力されるのか?

編集 削除
はじめ  2006-09-04 09:53:40  No: 62896  IP: 192.*.*.*

>コンソールアプリか、Windowsアプリか?

WindowsアプリでMFCを使用してます。EXEです。

>main または WinMain 関数で、特定のの戻り値を返すのか?

WinMainを使用してますが、隠蔽されていますよね?
戻り値を返すようにできるのでしょうか?

>結果がstdoutに出力されるのか?

stdoutは使用していません。

編集 削除
subaru  2006-09-04 10:10:18  No: 62897  IP: 192.*.*.*

>WinMainを使用してますが、隠蔽されていますよね?
>戻り値を返すようにできるのでしょうか?
CWinApp::ExitInstance の戻り値じゃないの?

編集 削除
はじめ  2006-09-04 14:18:56  No: 62898  IP: 192.*.*.*

CWinApp::ExitInstanceから取得できました。
ありがとございました。

編集 削除
はじめ  2006-09-04 14:19:30  No: 62899  IP: 192.*.*.*

解決しました。

編集 削除