systemd+agetty+login+bash で Ctr+C を intr 信号にマッピングする作業を担当するプロセスは何ですか?

systemd+agetty+login+bash で Ctr+C を intr 信号にマッピングする作業を担当するプロセスは何ですか?

どのプロセスがこれらのマッピングを担当しているかを理解するためにソースコードを読みましたが、まだわかりません。誰でもこれに関連するコードを教えてもらえますか?

ソースコード: agetty+login(util-linux プロジェクト)システム

ベストアンサー1

このマッピングを担当するプロセスはありません。これはカーネルの一部であるデバイスドライバ機能であり、ctrl-cデフォルトは .

ctrl-ctty(またはpty)デバイスにマッピングされ、SIGINT端末を制御するフォアグラウンドプロセスに送信されます。

Systemdはagettyをttyデバイスに接続して起動し、agettyはttyデバイスを初期化し(styまたはtcsetattrのシステムコールバージョンを使用して)入力を待ってから、最終的にログインを実行します。

たとえば、tcsetattrを使用している場合は、c_ccttyがアクション(行の編集やシグナルなどを含む)にマッピングする特殊文字配列とデフォルト値をVINTR含むttyにtermios構造を適用します。ctrl-ctty がこれらの文字を解釈できるようにします。

しばらくすると、アプリケーション(bash、vim、emacsなど)もtermiosを操作し、モードビットを変更して行編集文字を無効にしたり(エミュレート)、文字通り読み込んで使用できるように一部または全部の中断文字を無効にすることができます。 。アプリケーションのニーズに応じて。

おすすめ記事