我写了一个应用程序,它只是执行java -jar
。我希望启动器应用程序在执行CreateProcessA
后立即退出。CreateProcess阻塞 - 奇怪的行为
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);
如果我'通过IDE执行这一(Netbeans的7)一切工作正常:JAVA继续运行时启动终止。 如果我通过双击运行相同的exe文件:java启动jar,但启动程序等待java进程退出。
那么当通过IDE运行独立运行时,CreateProcess有什么不同?
您没有正确初始化'STARTUPINFO'和'PROCESS_INFORMATION'。你检查过'CloseHandle()'的返回值吗? – 2012-02-13 09:59:52
CloseHandle在两种情况下返回'1'。这两个结构的哪些值必须在最小的情况下初始化? – gorootde 2012-02-13 10:08:04
下面是示例:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx – 2012-02-13 10:12:59