2012-01-18 7 views
2

popenを使用して、マスタプログラムからC++スレーブプログラムを開始しています。ただし、スレーブがタスクを完了するまで、制御をマスタープログラムに戻すことはありません。マスタプログラムを新しいスレッドでスレーブを開始する

別のセッション(または別のスレッド)でスレーブを起動するにはどうすればいいですか?制御がマスターに返される前にマスターが終了するのを待たされることはありませんか?

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

答えて

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(); 
} 
関連する問題