0
ターミナル設定を変更するコード(これはPythonを組み込み、いくつかのターミナル操作モジュールを使用します)では、Ctrl- \ SIGQUITをプロセスに送信すると変更された状態が維持されます。シグナルハンドラのターミナル設定(termios)を復元する
起動時に端末の設定を保存してから、それを復元するSIGQUITハンドラを登録するのは安全ですか?安全でない場合、最悪の場合はどうなりますか?
ターミナル設定を変更するコード(これはPythonを組み込み、いくつかのターミナル操作モジュールを使用します)では、Ctrl- \ SIGQUITをプロセスに送信すると変更された状態が維持されます。シグナルハンドラのターミナル設定(termios)を復元する
起動時に端末の設定を保存してから、それを復元するSIGQUITハンドラを登録するのは安全ですか?安全でない場合、最悪の場合はどうなりますか?
シグナルハンドラは、通常、痩せていて大した作業ではありません。シグナルハンドラから非同期セーフではない関数を呼び出すべきではありません。 Async-signal-safe functions。あなたのtermiosのコードがシグナルハンドラから端末設定の復元よりも、機能AS非含まれているのであれば、推奨されません(あなたが取り扱いとなりますがSIGQUIT)これについてどのように
:fork()
がでAS安全であると記載されていマニュアルページはsignal
です。子プロセスをフォークしないでください、execv
設定を復元する別のプログラム?
役立つ回答ですが、最初の部分は理解できません。「あなたのプログラムの範囲外です」どうして知っていますか?他の部分が端末の設定を最初に変更するため、これは完全に範囲内です。 – eudoxos
いいえ、プログラムの終了後も変更は永続的であることを意味しました。私はちょうどあなたが言及したことを繰り返していた。それらのstatemetnsを削除しました – Prabhu
ああ、大丈夫、理解:) – eudoxos