popen
マスタープログラムからC++スレーブプログラムを起動するために使用しています。ただし、そうすることにより、スレーブがタスクを完了するまで、制御はマスタープログラムに戻りません。
別のセッション(または別のスレッド)でスレーブを開始して、制御がマスターに戻される前にマスターがスレーブの終了を強制されないようにするにはどうすればよいですか?
マスターがスレーブを開始してから終了し、マスターが終了した後もスレーブが続行できるようにしたいと思います。
popen
マスタープログラムからC++スレーブプログラムを起動するために使用しています。ただし、そうすることにより、スレーブがタスクを完了するまで、制御はマスタープログラムに戻りません。
別のセッション(または別のスレッド)でスレーブを開始して、制御がマスターに戻される前にマスターがスレーブの終了を強制されないようにするにはどうすればよいですか?
マスターがスレーブを開始してから終了し、マスターが終了した後もスレーブが続行できるようにしたいと思います。
これを行うには、メインプロセスをフォークしてから、 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();
}