2011-10-31 47 views
0

C++プログラムを別のプログラム/プロセス(特にC++)で起動し、終了するのを待たないようにするにはどうすればよいですか? (だからsystem()は、他のプログラム/プロセスを子プロセスとして起動するのでここでは機能しません)C++でそれを待たずに別のプログラムを起動するには?

別のスレッドまたは何かで2番目のプログラム/プロセスを開始することを考えていましたが、作業。

ありがとうございました。

編集:実行するLinux、その精度をmissinため申し訳ありません...(Ubuntuの11.10は、正確には)

+0

通常の解決策は、フォーク()/ execの(にある) 何を探していることは[フォークですhttp://stackoverflow.com/questions/1653340/exec-and-fork – sehe

+0

を参照してください。とExec](http://stackoverflow.com/questions/1653340/exec-and-fork/1653349#1653349) –

答えて

2

は(あなたはむしろ仕事以外のスレッドを望んでいた場合はclone()fork()とフォークを作成し、一つのプロセスでexecve()またはsystem()を使用してプログラムを実行し、他の元のプログラムを実行し続けます。

2

あなたは(システムでnohupを使用することができます)。つまり、あなたの呼び出されたC++プログラムはバックグラウンドで動作しますが、他のC++プログラムはnohupから終了シグナルを取得し、システムコールを終了します。例えば:

system("nohup gedit &") 
+3

それを行うことができます*右*方法... –

0

あなたはforkは、基本的には現在のものを複製して新しいプロセスを作成しますforkexecの誘導体を使用することができ、あなたはUNIX/Linux上でこれをやっていると仮定。 waitまたはwaitpidを使用して、子を待って終了ステータスを取得することもできます。

EDIT:私はいつも私より速く投稿します。 xD

+0

私は知っている!理解できません! :D – Shahbaz

0

MS Windowsの場合は、CreateProcess()がその方法です。引用:Note that the function returns before the process has finished initialization.

関連する問題