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