2

現在のプロセスを複製して、Windowsで別のインスタンスを生成する最も簡単な方法は何ですか?Linuxにはfork()がありますが、必要なのは、おそらくCreateProcess()正しい引数を使用して、同じプロセスでmainを再度実行することだけです。

4

2 に答える 2

1

@DavidHeffernanがコメントしたように:

STARTUPINFO si;
::memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
::CreateProcess(NULL, ::GetCommandLine(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
于 2012-09-30T21:07:31.090 に答える
0

Cygwinfork()は管理された環境内で実装しますが、それでも、POSIXの動作を正確に再現するために、子供が親に追いつくようにするための複雑なスクエアダンスです。

エミュレートする必要はないようですfork()が、fork()/ exec()。そのためには、環境変数、プログラムパラメータを収集し、それらをに渡すCreateProcess()だけで十分です。ファイル記述子を子にコピーするオプションもあります。CreateProcessドキュメントを参照してください。

于 2012-10-12T22:36:52.587 に答える