2

クラッシュしたプロセスをWindowsでリロードする方法は?もちろん、カスタム監視Winサービスプロセスを実行できます。しかし、たとえばFirefox:そのようなものはインストールされていないようですが、それでもクラッシュしたときに自動的に再起動できます。

4

4 に答える 4

4

Vista以降では、RegisterApplicationRestart APIを使用して、クラッシュまたはハングしたときに自動的に再起動できます。

Vistaより前では、再起動を行うトップレベルの例外フィルターが必要ですが、侵害されたプロセス内でコードを実行することは完全に安全または信頼できるわけではないことに注意してください。

于 2009-03-21T00:29:23.080 に答える
1

Firefoxは、タブを開いたり、リンクをクリックしたり、その他のアクションを実行したりするたびに、常にその状態をハードディスクに保存します。また、安全にシャットダウンしたことを示すフラグも保存されます。

起動時に、これをすべて読み戻し、その情報に基づいて「復元」することができます。

于 2009-03-21T00:29:05.703 に答える
1

さまざまな種類のプログラム クラッシュへの対処の詳細については、こちらの回答を参照してください。

于 2009-03-21T01:20:25.237 に答える
0

私の記憶が正しければ、Windows は POSIX の少なくとも一部のサブセットを実装しているため、シグナル インターフェイス (SIGKILL、SIGSEGV、SIGQUIT など) が「必要」です。

Linux 以外でこれを行ったことはありませんが、signal() (signal.h) を使用して予期しない終了トラップを設定してみてください。ドキュメントのクイックスキャンから、シグナルの処理中に実行できることはほとんどないようです。新しいプロセスを開始することさえ禁止リストに載っている可能性があります。

考えてみると、おそらくマスター/ワーカー パターン、ワーカーを生成するだけの非常に単純な親スレッド (すべての UI やその他の処理を行う) を使用することになるでしょう。特定の「I'm going die now」ビットが設定されていないが、それでも停止する場合 (親プロセスは、生成されたプロセスが停止したというメッセージ/通知を常に受け​​取ります)、マスターはワーカーを再生成します。主なテーマは、マスターを非常にシンプルに保ち、独自のバグのために死ぬのが難しいことです.

于 2009-03-21T00:51:25.243 に答える