2

我正在使用popen从主程序启动 C++ 从程序。然而,通过这样做,控制不会返回到主程序,直到从属程序完成其任务。

如何在单独的会话(或单独的线程)中启动从属,以便在将控制权传递回主控之前,不会强制主控等待它完成?

我希望主人能够启动奴隶然后完成,奴隶在主人退出后继续。

4

1 回答 1

3

为此,您需要 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(); 
}
于 2012-01-18T12:16:55.177 回答