Previous: , Up: Lossage   [Contents][Index]


51.8 緊急エスケープ

テキスト端末では、1回目のC-gにたいしてEmacsが実際に反応してquitする前に、2回目のC-gをタイプすると、緊急エスケープ(emergency escape)が、Emacsを即座にサスペンドします。これにより、どんなにひどくハングしていても、常にGNU Emacsを抜け出すことができます。物事が正しく処理されている場合、Emacsは最初のC-gを素早く認識・処理するので。2回目のC-gは緊急エスケープを引き起こしません。しかし何らかの問題が、Emacsが最初のC-gを処理するのを妨げる場合、2回目のC-gでシェルに戻ります。

緊急エスケープによるサスペンドからEmacsを再開する場合、サスペンド前に行なっていた何かに戻る前に、Emacsは回復の報告と、以下の2つの質問をします:

Emacs is resuming after an emergency escape.
Auto-save? (y or n)
Abort (and dump core)? (y or n)

質問に応えるには、それぞれにたいしてyまたはnの後に、RETをタイプします。

Auto-save?’にたいしてyと応えると、自動保存が有効なすべての編集されたバッファーの自動保存を、即座に行ないます。nと応えると、これをスキップします。この質問は、Emacsが安全に自動保存を行えないような、何らかの状況にある場合は省略されます。

Abort (and dump core)?’にたいしてyと応えると、Emacsはクラッシュしてコアダンプします。これは専門家(wizard)が、なぜEmacsが最初のC-gでquitしなかったかを見つけ出すことを可能にします。コアダンプの後、実行は継続されません。

この質問にnと応えた場合、Emacsは実行を再開します。運がよければ、Emacsは最終的にquit要求を行なうでしょう。そうでない場合、連続してC-gをタイプして、緊急エスケープを再度呼び出します。

実際はEmacsがハングしているのではなく、遅いだけの場合、本当に意味するところを意図せずに、2連C-gの機能を呼び出してしまうかもしれません。この場合は、2つの質問の両方にnを応えれば、前の状態に戻ることができます。やがて要求したquitが行なわれるでしょう。

緊急エスケープはテキスト端末だけでアクティブになっています。グラフィカルなディスプレーでは、マウスを使用してEmacsをkillしたり、他のプログラムに切り替えることができます。

MS-DOSでは緊急エスケープを発生させるために、C-Breakを2回タイプしなければなりません — しかしシステムコールがハングしたり、EmacsがCコードのタイトなループにハマっているときは機能しないケースがあります。