1

exit(exit_code)と同様ですが、別のプロセスで、アプリの子プロセスを強制終了してクリーンアップ(デコンストラクターとatexit関数を呼び出す)を実行する方法はありますか?

4

2 に答える 2

3

Windowsを使用している場合は、おそらく、最後のパラメーターとしてPROCESS_INFORMATIONを持つCreateProcessによって子プロセスを開始します。

MSDNのCreateProcess

MSDNのプロセス情報

オプション1:

このプロセス情報には、hProcessメンバーで開始されたプロセスへのハンドルが含まれています。

このハンドルを保存し、それを使用して子プロセスを強制終了できます。

挿入 あなたはおそらくWM_CLOSEおよび/またはWM_QUITを送信したいですか?プロセスを「きれいに」終了するには:

これは、KBでwin32プロセスをクリーンに強制終了する方法に関するKB記事です。

**挿入の終了**

オプション2:

プロセスツリーを適切に強制終了する方法についての説明は次のとおりです。Windowsでプロセスツリーを終了する

于 2012-06-16T11:23:16.107 に答える
2

その種の単純な Win32 API はありません。OS は、プログラムのソース コードがどの言語で書かれているかは気にしません。コンパイルされたプログラムは、一連の CPU 命令とデータにすぎません。

最もクリーンな方法は、プロセス間にある種の通信チャネルを確立し (共有メモリなどを介して)、単純にプロセスの終了を要求することです。

子プロセスをデバッグ済みプロセスとして開始し、デバッグ API を使用して子プロセスの動作を変更することで同じことを実現できますが、これは煩わしすぎて実装が簡単ではありません。

于 2012-06-16T08:59:36.597 に答える