2

popenマスタープログラムからC++スレーブプログラムを起動するために使用しています。ただし、そうすることにより、スレーブがタスクを完了するまで、制御はマスタープログラムに戻りません。

別のセッション(または別のスレッド)でスレーブを開始して、制御がマスターに戻される前にマスターがスレーブの終了を強制されないようにするにはどうすればよいですか?

マスターがスレーブを開始してから終了し、マスターが終了した後もスレーブが続行できるようにしたいと思います。

4

1 に答える 1

3

これを行うには、メインプロセスをフォークしてから、 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 に答える