質問: C ++の "システム"待機なし(Win32) 私はサーバーにバージョンの更新があるかどうかをチェックするプログラムを持っています。今私は何かをする必要があります ``` if(update_avail) { system("updater.exe"); exit(0); } ``` 「updater.exe」が完了するのを待たずに。それ以外の場合は、実行中のためメインプログラムを置き換えることができません。では、 "updater.exe"を実行してすぐに終了する方法は?私は `fork` を使って* nixの方法を知っているので、Windowsでこれを行う方法は?
回答: Win32には `fork()`はありません。探しているAPI呼び出しは、 `:: CreateProcess()`と呼ばれます。これは、system()が使用している基礎となる関数です。 `:: CreateProcess()`は本質的に非同期です。返されたプロセスハンドルを特に待っていない限り、呼び出しは非ブロックです。 また、プロセス標準I/Oをリダイレクトしたり、プロセスの待機をしていない場合に使用できる、より高度な関数 `:: ShellExecute()`もあります。これには、実行可能ファイルのシステムPATHを検索する利点と、バッチファイルを起動する機能と、ドキュメントファイルに関連付けられたプログラムを起動する機能があります。