interrupt(-旧スイッチ,+新スイッチ) interrupted
プログラムの実行は、通常は割り込み文字CTRL-CあるいはBREAKをタイプすることで止められますが、これはオペレ−ティングシステムによって異なります。
interrupt/2は、割り込みモ−ドをテストしたり変更します。使用可能なモ−ドは、マニュアルとオ−トマチック(デフォルト)です。
マニュアルモ−ドでは、"interrupt(_,off)"で設定されます。また割り込みが起こると、割り込みフラグが設定されますが、プログラムの実行は止まりません(interrupted/0を参照して下さい)。
オ−トマチックモ−ドはデフォルトですが、"interrupt(Old,on)"で設定することもできます。割り込みが起こると、IF/Prologは"raise_error(interrupt)"を呼び出します。現在のゴ−ルの実行が取り消され、ユ−ザはインタプリタのプロンプト"?-"に戻ります。
interrupted/0は、割り込みフラグが設定されていてモ−ドがマニュアルの場合に成功します。また、割り込みフラグをリセットします。 error_protect/2で現在のゴ−ルが呼び出されると、その例外処理の第1引数がエラ−メッセ−ジ"interrupt"に単一化されます。
?- interrupt(_,off), repeat, write('waiting '), interrupted, write(' O U C H !\n'). waiting waiting waiting wating . . . ^C O U C H ! yes ?- interrupt(_,on), error_protect( (repeat,write('waiting '),fail), write(Message) ). waiting waiting waiting waiting . . . ^C interrupt Message = interrupt yes ?- _
on/off_expected スイッチはonでもoffでもない。
| scroll to top |
|