我试图创建一个程序,它启动另一个.exe和本身只是关闭后,其他程序已经启动。我目前有以下代码:
#include <cstdlib> int main( ) { std::system( "checkpoint.exe" ); }
我可以让checkpoint.exe启动,但是启动程序本身直到checkpoint.exe关闭后才关闭,我该如何解决这个问题呢?
checkpoint.exe
tcomlyy61#
由于您似乎使用的是Windows,因此可以使用CreateProcess
CreateProcess
LPSTARTUPINFO lpStartupInfo; LPPROCESS_INFORMATION lpProcessInfo; memset(&lpStartupInfo, 0, sizeof(lpStartupInfo)); memset(&lpProcessInfo, 0, sizeof(lpProcessInfo)); CreateProcess("checkpoint.exe" NULL, NULL, NULL, NULL, NULL, NULL, NULL, lpStartupInfo, lpProcessInfo )
0yycz8jy2#
前面的答案有一些bug,你必须初始化STARTUPINFO和PROCESS_INFORMATION结构体,而不是LPSTARTUPINFO或LPPROCESS_INFORMATION,后者只是指向结构体的指针。下面是一个可行的解决方案:
STARTUPINFO
PROCESS_INFORMATION
LPSTARTUPINFO
LPPROCESS_INFORMATION
#include <cstdlib> #include <Windows.h> int main( ) { STARTUPINFO StartupInfo; PROCESS_INFORMATION ProcessInfo; ZeroMemory( &StartupInfo, sizeof( StartupInfo ) ); StartupInfo.cb = sizeof( lpStartupInfo ); ZeroMemory( &ProcessInfo, sizeof( ProcessInfo ) ); CreateProcess( "Program.exe", NULL, NULL, NULL, NULL, NULL, NULL, NULL, &StartupInfo, &ProcessInfo ); return 0; }
2条答案
按热度按时间tcomlyy61#
由于您似乎使用的是Windows,因此可以使用
CreateProcess
0yycz8jy2#
前面的答案有一些bug,你必须初始化
STARTUPINFO
和PROCESS_INFORMATION
结构体,而不是LPSTARTUPINFO
或LPPROCESS_INFORMATION
,后者只是指向结构体的指针。下面是一个可行的解决方案: