2012-02-05 17 views
6

POSIXには、サブプロセスを作成するためのfork()関数があります。 Windowsでfork()の機能をどうすれば実現できますか?Windowsでサブプロセスを開始するにはどうすればよいですか?

+4

何を知りたいですか? Windows上でスレッドプログラミングを作成するには? – Mithrandir

+0

ああ、いいえ、私はLinuxを勉強するときに困っています... Windowsでは、関数CreateThread(...)を使ってスレッドを作成できます。しかしLinuxでは、子プロセスを作成するための関数fork()があり、Window上でfork()と似た関数があることを知りたいのですが... –

+0

私が知る限り、yuは_spawn()、_beginthread )と_endthread()です。 – Mithrandir

答えて

7

Windowsにはfork()という直接的な同等物はありません。

CreateProcess()は、新しいプロセスを作成するために使用できるネイティブ関数です(ただし、セマンティクスはfork()とはかなり異なります)。

これを別の方法として、Unixではプロセスが安価に自分自身のクローンを作成することができます。 Windowsでこれを行うための安価な方法はありません。

fork()のクローニングアスペクトを気にしない場合は、CreateProcess()は問題ありません。

+0

しかし、CreateProcess()とfork()の違いは何ですか? –

+4

@Tu_JianWu:fork()によって作成された新しいプロセスは、変数の値と現在の命令ポインタを含む親の状態を継承します。 CreateProcess()によって作成された新しいプロセスは、最初から開始されません。また、fork()は既に実行中の実行可能ファイルの新しいコピーを作成するだけで、CreateProcess()は実行可能なファイルを起動できます。 –

+0

@ハリー・ジョンストン:ありがとう... –

関連する問題