2016-10-21 12 views
0

ターミナル設定を変更するコード(これはPythonを組み込み、いくつかのターミナル操作モジュールを使用します)では、Ctrl- \ SIGQUITをプロセスに送信すると変更された状態が維持されます。シグナルハンドラのターミナル設定(termios)を復元する

起動時に端末の設定を保存してから、それを復元するSIGQUITハンドラを登録するのは安全ですか?安全でない場合、最悪の場合はどうなりますか?

答えて

0

シグナルハンドラは、通常、痩せていて大した作業ではありません。シグナルハンドラから非同期セーフではない関数を呼び出すべきではありません。 Async-signal-safe functions。あなたのtermiosのコードがシグナルハンドラから端末設定の復元よりも、機能AS非含まれているのであれば、推奨されません(あなたが取り扱いとなりますがSIGQUIT)これについてどのように

fork()がでAS安全であると記載されていマニュアルページはsignalです。子プロセスをフォークしないでください、execv設定を復元する別のプログラム?

+0

役立つ回答ですが、最初の部分は理解できません。「あなたのプログラムの範囲外です」どうして知っていますか?他の部分が端末の設定を最初に変更するため、これは完全に範囲内です。 – eudoxos

+0

いいえ、プログラムの終了後も変更は永続的であることを意味しました。私はちょうどあなたが言及したことを繰り返していた。それらのstatemetnsを削除しました – Prabhu

+0

ああ、大丈夫、理解:) – eudoxos

関連する問題