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

C++ C++;启动另一个程序并退出,c++,C++,我正在尝试创建一个程序,在该程序中,它启动另一个.exe,而在另一个程序启动后,它自己刚好关闭 我目前拥有以下代码: #include <cstdlib> int main( ) { std::system( "checkpoint.exe" ); } #包括 int main() { std::system(“checkpoint.exe”); } 我可以启动checkpoint.exe,但是启动程序本身直到checkpoint.exe关闭才关闭。我该如何解决这个问题

我正在尝试创建一个程序,在该程序中,它启动另一个.exe,而在另一个程序启动后,它自己刚好关闭

我目前拥有以下代码:

#include <cstdlib>

int main( )
{
    std::system( "checkpoint.exe" );
}
#包括
int main()
{
std::system(“checkpoint.exe”);
}

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

既然您似乎在使用Windows,那么您可以使用


由于您似乎正在使用Windows,因此可以使用


前面的答案有一些bug,所以这里有一个可行的解决方案:

#include <cstdlib>
#include <Windows.h>

int main( )
{    
    STARTUPINFO lpStartupInfo;
    PROCESS_INFORMATION lpProcessInfo;

    ZeroMemory( &lpStartupInfo, sizeof( lpStartupInfo ) );
    lpStartupInfo.cb = sizeof( lpStartupInfo );
    ZeroMemory( &lpProcessInfo, sizeof( lpProcessInfo ) );

    CreateProcess( "Program.exe",
                   NULL, NULL, NULL,
                   NULL, NULL, NULL, NULL,
                   &lpStartupInfo,
                   &lpProcessInfo
                   );

    return 0;
}
#包括
#包括
int main()
{    
STARTUPINFO和STARTUPINFO;
进程信息lpProcessInfo;
零内存(&lpStartupInfo,sizeof(lpStartupInfo));
lpStartupInfo.cb=sizeof(lpStartupInfo);
零内存(&lpProcessInfo,sizeof(lpProcessInfo));
CreateProcess(“Program.exe”,
空,空,空,
空,空,空,空,
&lpStartupInfo,
&lpProcessInfo
);
返回0;
}

前面的答案有一些错误,所以这里有一个可行的解决方案:

#include <cstdlib>
#include <Windows.h>

int main( )
{    
    STARTUPINFO lpStartupInfo;
    PROCESS_INFORMATION lpProcessInfo;

    ZeroMemory( &lpStartupInfo, sizeof( lpStartupInfo ) );
    lpStartupInfo.cb = sizeof( lpStartupInfo );
    ZeroMemory( &lpProcessInfo, sizeof( lpProcessInfo ) );

    CreateProcess( "Program.exe",
                   NULL, NULL, NULL,
                   NULL, NULL, NULL, NULL,
                   &lpStartupInfo,
                   &lpProcessInfo
                   );

    return 0;
}
#包括
#包括
int main()
{    
STARTUPINFO和STARTUPINFO;
进程信息lpProcessInfo;
零内存(&lpStartupInfo,sizeof(lpStartupInfo));
lpStartupInfo.cb=sizeof(lpStartupInfo);
零内存(&lpProcessInfo,sizeof(lpProcessInfo));
CreateProcess(“Program.exe”,
空,空,空,
空,空,空,空,
&lpStartupInfo,
&lpProcessInfo
);
返回0;
}

您需要启动一个独立的流程,该流程不会阻止您的程序执行,请参见此部分。一些系统维护流程层次结构。每个进程(第一个进程除外)都是花药进程的子进程。你在试图破坏那种等级制度。有些系统能够创建分离的进程。您可能需要使用操作系统特定的调用来创建这样一个进程。@Axalo:看起来他使用的是windows,所以没有fork:/n您需要启动一个单独的进程,它不会阻止您的程序执行,请参见此部分。一些系统维护一个进程层次结构。每个进程(第一个进程除外)都是花药进程的子进程。你在试图破坏那种等级制度。有些系统能够创建分离的进程。很可能您将不得不使用操作系统特定的调用来创建这样一个进程。@Axalo:看起来他使用的是windows,所以NoFork:/MSDN对各种进程创建标志也有一些好处:)MSDN对各种进程创建标志也有一些好处:)你在说什么bug?你能在回答中描述一下它们吗?你在说什么虫子?你能在回答中描述一下吗?