私は単純にjava -jar
を実行するアプリケーションを作成しました。 CreateProcessA
を実行した直後にスターターアプリケーションを終了します。CreateProcess blocking - strange behavior
LPSTR _cmdupdate = const_cast<char *> (cmdupdate.c_str());
STARTUPINFO info = {sizeof (info)};
ZeroMemory(&info,sizeof(info));
info.cb=sizeof(info);
PROCESS_INFORMATION processInfo;
ZeroMemory(&processInfo,sizeof(processInfo));
CreateProcessA(TEXT(java_exe.c_str()), _cmdupdate, NULL, NULL, false, 0, NULL, TEXT("bin"), &info, &processInfo);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
exit(0);
I'amはIDEを経由して、これを実行した場合には(Netbeansの7)すべてが正常に動作します。javaは、スターターが終了しながら実行し続けます。 同じexeをダブルクリックして実行している場合、javaはjarを起動しますが、スターターはJavaプロセスが終了するのを待ちます。
IDEで実行しているときとスタンドアロンで実行しているときのCreateProcessとの違いは何ですか?
あなたは 'STARTUPINFO'と' PROCESS_INFORMATION'を適切に初期化していません。 'CloseHandle()'の戻り値をチェックしましたか? –
CloseHandleはどちらの場合も '1'を返します。これら両方の構造体のどの値を、最小限の場合に初期化する必要がありますか? – gorootde
ここに例があります:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx –