- ベストアンサー
c言語.ctrl文字の読み取り
unixでのプログラミングについてです. コンソールで,キーボードから[ctrl+英文字]が入力されたことが 分かるプログラムを作りたいのですが, どのようにすればいいのでしょうか. 例えばctrl+Cやctrl+Zならば,signal.hを利用すれば入力された事がわかりますが, シグナルを送るキーでない,ctrl+Lなどはどのようにすれば 押されたことが分かりますか. よろしくお願いします.
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
普通に1文字入力すれば、Ctrl+Aなら'\x01'、Ctrl+Bなら'\x02'、…が入ってきます。Ctrl+Lは'\x0c' Ctrl+Cなんかも、端末をrawモードにしてsignalを発生させないようにしておけば、普通のキー入力で'\x03'として取得できます。 (というか、signal システムコールは、プロセス間通信で端末などからのsignalを捕捉するものです。 そのため、INTRをCtrl+C以外に割り当ててるような環境だと、 signal(SIGINT)では、正しくCtrl+Cを検出できません。 純粋なキー操作としての「[Ctrl]を押しながら[C]」の検出にsignalを使うのは間違えてます。)
お礼
有り難うございます. 解決しました.