たとえば、端末から制御文字を送信するときにを押すとCtrl+C
、ライン規律この制御文字を表すバイトが受信されます(の0x03
場合Ctrl+C
)。
今ではなくライン規律0x03
端末に関連するプログラムにバイトを送信すると、代わりに信号が送信されますSIGINT
(または他の制御文字の場合は別の操作を実行します)。
今予防する方法はありますか?ライン規律制御文字処理から始めて、私が望むのは、端末に関連するプログラムが制御文字(0x03
私たちの場合)を表す実際のバイトを受け取ることです。
答え1
Linuxでは、次のものを使用できます。
$ stty intr undef
その端末で。これにより、ブレーク文字が空( "undef")に設定されます。復元するには、次を使用します。
$ stty intr ^c
man stty
詳細より。
答え2
さまざまな制御文字[… ] 制御文字
私は複数形を見つけました。あなたが探している非標準入力モード、POSIX標準以前は、次のように知られています。オリジナルモード。これは、GNU Readline、ZLE、またはlibeditを使用するアプリケーションによって採用されたモードです。それらのコードはtcgetattr()
、ライブラリ関数cfmakeraw()
またはtcsetattr()
類似の機能を使用して設定します。これらはの基礎でもありますstty raw
。 (stty sane
このゲームをプレイする場合は、存在することに注意してください。)
追加読書
- https://stackoverflow.com/a/39302351/340790
- POSIX端末インターフェース。ウィキペディア。
cfmakeraw()
。 NetBSD のマニュアルページ。 2004年。