C++启动另一个程序并退出

zaqlnxep  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(249)

我试图创建一个程序,它启动另一个.exe和本身只是关闭后,其他程序已经启动。
我目前有以下代码:

#include <cstdlib>

int main( )
{
    std::system( "checkpoint.exe" );
}

我可以让checkpoint.exe启动,但是启动程序本身直到checkpoint.exe关闭后才关闭,我该如何解决这个问题呢?

tcomlyy6

tcomlyy61#

由于您似乎使用的是Windows,因此可以使用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
             )
0yycz8jy

0yycz8jy2#

前面的答案有一些bug,你必须初始化STARTUPINFOPROCESS_INFORMATION结构体,而不是LPSTARTUPINFOLPPROCESS_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;
}

相关问题