kprolog K-Prolog Compiler Version 6.0

割り込み

インタプリタが指令を実行している途中でも、 端末からの割り込みキーによって実行に割り込むことができます。 このとき、標準的にはインタプリタは次のメッセージを表示します。

      Interrupt (h for help):

このメッセージに対して、次のようなコマンドを指定できます。
a : (abort)
abort組込み述語と同じ効果です。
b : (break)
break組込み述語と同じ効果です。
c : (continue)
割り込みから復帰して、実行を継続します。
e : (exit)
Prologの実行を終了します。
h : (help)
コマンドの一覧表を表示します。
n : (notrace)
トレースを停止します(デバッガでのみ有効)。
t : (trace)
トレースを開始します(デバッガでのみ有効)。
? : (leash(full)+creep)
デバッガのコマンドcreepを行います。
インタプリタがこれらのコマンドに応えて動作するのは、 そのときに実行中ゴールの次のゴールを実行しようとするときです。 たとえば、端末から入力動作中に割り込みコマンドを使用しても、 実際の効果が現れるのは、入力動作を終了してからです(eコマンドを除く)。

また、変数とそれ自身を含む項の単一化か無限ループに入ることがありえます。 このような単一化の実行中には、aコマンドと eコマンド以外は動作しません (逆に、bコマンドや gコマンドが働かないことから、 単一化が無限ループに入ったことが推定できます)。

割り込みに対する前述の標準動作が望ましくない場合は、 組込み述語 on_interrupt によって、割り込み発生時に実行するゴールを 指定できます。
指定できるゴールはアトムであり、引数を持つ述語は指定できません。 指定されたゴールに制御が移るのは、 そのときに実行中のゴールの次のゴールを実行しようとするときです。

また、割り込み発生時の動作を標準動作に戻すためには、on_interrupt(0)を 実行します。

[例]

   14: ?- on_interrupt(end).      % 割り込みを無視します。
   15: ?- on_interrupt(0).        % 元に戻します。


一つ上に戻る 目次に戻る