我正在使用popen
从主程序启动 C++ 从程序。然而,通过这样做,控制不会返回到主程序,直到从属程序完成其任务。
如何在单独的会话(或单独的线程)中启动从属,以便在将控制权传递回主控之前,不会强制主控等待它完成?
我希望主人能够启动奴隶然后完成,奴隶在主人退出后继续。
我正在使用popen
从主程序启动 C++ 从程序。然而,通过这样做,控制不会返回到主程序,直到从属程序完成其任务。
如何在单独的会话(或单独的线程)中启动从属,以便在将控制权传递回主控之前,不会强制主控等待它完成?
我希望主人能够启动奴隶然后完成,奴隶在主人退出后继续。
为此,您需要 fork 主进程,然后检查fork命令返回的 pid_t。然后,您可以从那里随意执行 exec 或 popen。
当您调用 fork 时,调用进程会返回一个 pid_t(这是您刚刚创建的子进程的 id)。如果 pid_t 为 0,那么这是新创建的进程,您可以随心所欲。
例如
pid_t childPid = fork();
if( childPid == 0 )
{
// Do your process create here.
...
// Abort this process once it returns control.
abort();
}