WaitForMultipleObjects is not Waiting
WaitForMultipleObjects is not Waiting
我有一个函数,它应该通过向CreateProcess传递命令来启动一组进程。我连续调用这个函数两次,但不知何故,该函数退出,并在第一组进程完成之前被第二次调用。
它似乎只等待一个进程退出。下一批会在我关闭第一组中的某个应用程序时启动流程。
我使用它一起启动一组应用程序,并在所有这些进程退出时启动下一个组。为什么我的WaitForMultipleObjects
调用没有等待组中的所有进程退出?
void ProcessLauncher::launch_processes(PROCESS_LIST_TYPE& processes)
{
unsigned long const CP_MAX_COMMANDLINE = 32768;
VECTOR_TYPE<PROCESS_INFORMATION> procs;
VECTOR_TYPE<HANDLE> pHandles;
for (auto proc : processes)
{
STRING_TYPE command = proc.program_name + L" " + proc.params;
STARTUPINFO sinfo = { 0 };
sinfo.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION pi = { 0 };
try {
CHAR_TYPE* commandline = new CHAR_TYPE[CP_MAX_COMMANDLINE];
wcsncpy_s(commandline, CP_MAX_COMMANDLINE, command.c_str(), command.size() + 1);
CreateProcess(nullptr,
commandline,
nullptr,
nullptr,
false,
0,
nullptr,
nullptr,
&sinfo,
&pi);
delete[]commandline;
CloseHandle(pi.hThread);
procs.push_back(pi);
pHandles.push_back(pi.hProcess);
}
catch (std::bad_alloc&) {
std::wcerr << L"Insufficient memory to launch application" << std::endl;
return;
}
}
if (WAIT_FAILED == WaitForMultipleObjects(pHandles.size(), pHandles.data(), TRUE, INFINITE))
std::wcout << L"Failure waiting for process to terminate" << std::endl;
}
作为IInspectable引导我发现,CreateProcess调用未能创建进程,但我仍然在向向量添加句柄。我将其更改为仅在CreateProcess返回相当于TRUE的值时才向矢量添加句柄。
相关文章:
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- OpenCV Android C++ imwrite not found
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 错误"Could not find Boost"(缺少:上下文标头)
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- Is !NaN not a NaN?
- 为什么我会" void value not ignored as it ought to be"?
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- Directx 11 - CompileFromFile() is not compiling
- 方法错误"not all control paths return a value"和方法不返回值
- Centos7 g++ "to_string is not in a member of std"
- 将系数存储在头文件的数组中("does not name a type"错误)
- QGraphicsItems not showing up QGraphicsScene
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- vkWaitForFences and vkDeviceWaitIdle not waiting
- WaitForMultipleObjects is not Waiting