代码如下:
- // create process and wait for quiting
- bool XXXX::RunProcess(const std::string& command)
- {
- PROCESS_INFORMATION pi;
- STARTUPINFOA startInfo;
- memset(&startInfo, 0, sizeof(STARTUPINFO));
- startInfo.cb = sizeof(STARTUPINFO);
- startInfo.wShowWindow = SW_HIDE;
- startInfo.dwFlags = STARTF_USESHOWWINDOW;
- // create process
- if (!CreateProcessA( NULL, (LPSTR)command.c_str(), NULL, NULL, TRUE, 0, NULL, NULL, &startInfo, π))
- {
- return false;
- }
- WaitForSingleObject(pi.hProcess, INFINITE);
- return true;
- }
CreateProcess会创建一个Thread和Process来运行指定的程序,所以在程序运行结束后需要释放这两个handle。
需要要在return之前添加以下代码来释放资源:
- CloseHandle(pi.hProcess);
- CloseHandle(pi.hThread);