Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建进程处理_C++_Windows - Fatal编程技术网

C++ 创建进程处理

C++ 创建进程处理,c++,windows,C++,Windows,我使用Windows APICreateProcess函数。在msdn手册中,我发现 如果函数成功,请确保在使用完hProcess和hThread句柄后调用CloseHandle函数关闭它们。否则,当子进程退出时,系统无法清理子进程的进程结构,因为父进程仍有子进程的打开句柄 那么我应该在哪里做呢 情况是,这个过程已经开始,没有他的生活轨迹。它是否强制我创建一个线程,在该线程中创建进程,然后线程将使用等待,例如WaitForSingleObject,直到进程死机,以便释放句柄?您不必等待子进程完成

我使用Windows API
CreateProcess
函数。在msdn手册中,我发现

如果函数成功,请确保在使用完hProcess和hThread句柄后调用CloseHandle函数关闭它们。否则,当子进程退出时,系统无法清理子进程的进程结构,因为父进程仍有子进程的打开句柄

那么我应该在哪里做呢


情况是,这个过程已经开始,没有他的生活轨迹。它是否强制我创建一个线程,在该线程中创建进程,然后线程将使用等待,例如
WaitForSingleObject
,直到进程死机,以便释放句柄?

您不必等待子进程完成,当不再需要手柄时,只需
关闭手柄即可

这样做的原因是,即使在流程完成后,您也可能希望保留流程的句柄。例如,您可能需要检查其退货状态。只要你有一个手柄,Windows就无法清理它

但是,如果你不再关心孩子做什么,请关闭手柄,继续前进


如果需要,请调用
WaitForSingleObject
,并将从
CreateProcess
获得的句柄赋予它。或者使用回调函数调用
RegisterWaitForSingleObject
(再次将进程句柄传递给它),该回调函数将在进程结束时调用。

您不必等待子进程完成,只要在不再需要该句柄时
关闭句柄即可

这样做的原因是,即使在流程完成后,您也可能希望保留流程的句柄。例如,您可能需要检查其退货状态。只要你有一个手柄,Windows就无法清理它

但是,如果你不再关心孩子做什么,请关闭手柄,继续前进


如果需要,请调用
WaitForSingleObject
,并将从
CreateProcess
获得的句柄赋予它。或者使用回调函数调用
RegisterWaitForSingleObject
(再次将进程句柄传递给它),该函数将在进程结束时调用。

否-如果函数返回成功,只需立即关闭句柄,然后继续快乐的生活。如果您想“跟踪他的生活”然后你需要保持手柄在附近,直到你完成跟踪。请避免烧坏此函数的线程,RegisterWaitForSingleObject()可以降低成本。否-如果函数返回成功,只需立即关闭句柄,然后继续愉快地运行。如果您想“跟踪他的生活”,则需要保留句柄,直到完成跟踪。要避免在这个线程上烧掉,RegisterWaitForSingleObject()可以降低成本。如果我想在进程完成后将进程返回值保存到某个变量,我应该怎么做?是否有任何事件系统?事件本身就是句柄<当进程退出时,进程句柄上的code>WaitForSingleObject
将完成。如果您不想烧录线程,可以使用
RegisterWaitForSingleObject
在句柄发出信号时收到通知。更新以涵盖您确实希望等待的情况。如果我想在进程完成后将返回值保存到某个变量,我应该怎么做?是否有任何事件系统?事件本身就是句柄<当进程退出时,进程句柄上的code>WaitForSingleObject
将完成。如果您不想烧录线程,可以使用
RegisterWaitForSingleObject
在句柄发出信号时收到通知。更新以涵盖您确实想等待的情况。