次: Total Frustration, 前: After a Crash, 上: Lossage
バグのために、Emacsがquit-flag
を検査しないループに入ってしまうことも
ありえます。
このため、このフラグが設定されている状態で再度C-gが打たれると
ただちに実行を休止する特別な機能がEmacsにはあり、
いつでもGNU Emacsから抜け出すことができます。
通常、Emacsはすみやかにquit-flag
を認識し(中断し)ますから、
この特別な機能が使われることはまずありません。
(MS-DOSや互換システムでは、C-<BREAK>を2回連打する。)
C-gの連打によって休止したEmacsを再開すると、 Emacsは休止直前に実行していた動作に戻るまえに、 つぎの2つの質問をしてきます。
Auto-save? (y or n) Abort (and dump core)? (y or n)
それぞれの質問に対し、yかnに続けて<RET>で答えてください。
`Auto-save?'にyと答えると、 自動保存を行う設定になっている変更されたバッファすべてに対して ただちに自動保存を実行します。
`Abort (and dump core)?'にyと答えると、
Emacsは不正命令を実行してコアダンプを作ります。
コアダンプがあると、Emacsが中断できなかった理由をウィザード
1
が追究できます。
コアダンプを作り終えるとEmacsの実行は終了します。
nと答えると実行は継続します。
運がよければ、Emacsが最終的にはquit-flag
を検査して
正常に中断できるでしょう。
運が悪ければ、またループに入ったままになりますから、
再度C-gを打ってEmacsをまた休止します。
本当はEmacsが固まったのではなく単に遅いだけの場合には、 意図せずにC-gを連打してしまうことがあります。 その場合には、再開して2つの質問にnと答えればもとの状態に戻れます。 中断要求はすぐに受け付けられるでしょう。
XウィンドウシステムのもとでEmacsが動作している場合には、 C-g連打の機能は切ってあります。 というのは、ウィンドウマネージャを使ってEmacsを終了させたり、 別のウィンドウを開いて別のプログラムを動かせるからです。
MS-DOSや互換システムでは、 (MS-DOSやBIOSの)システムコールが固まっている場合や Emacsが非常にきつい(LispコードではなくCのコードで) 無限ループに入っている場合には、 C-<BREAK>を2回打っても緊急脱出の機能を使えない場合があります。