it-mure.jp.net

Fedora Linux:stty(または同等のもの)を使用してキーをバインドし、アプリケーション用にSIGUSR1を発生させる方法は?

私はFC14を使用していますが、これはおそらくかなり一般的なLinuxの質問です。

実行中のアプリケーションに対してSIGINTまたはSIGQUIT以外のシグナルが発生するLinuxターミナルドライバーのキーをバインドできるようにしたい。私はそれらのどちらも採用したくありません。ベルが鳴る場合は、古いCTRL/T機能に沿って考えてください。信号は、OSではなくアプリによってキャッチおよび処理されます。

これは長時間実行されるアクティビティのステータスレポート用であるため、SIGUSR1が適切と思われます。ただし、ターミナルキーボードからそれを具体的に上げることができない場合は、入手できるものを使用します。不可能を試みてSIGKILL B-)をキャッチしたくはありませんが、wouldSIGQUITSIGINTターミナルキーボードから。

シナリオ:

  1. 信号を上げることを行うように端末を設定します
  2. ターミナルウィンドウでシェルからアプリケーションを実行します
  3. 複雑な長時間実行セクションに入るまで待ちます
  4. CTRL/whatzitを押して信号を上げます
  5. アプリケーションはシグナルをキャッチし、ある種のステータスレポートを実行して、再開します

私はVMS/OpenVMSで問題なくこれを行うことができました、そしてそれはLinuxでそれがより難しいと思うために私のカボチャをちょっと凍らせます。

4
RoUS

残念ながら、魔法のキャラクターを介して信号を発生させるためのインターフェイスは、一般的なバインド文字から信号への接続ではありません。このように発生できる特定の信号があり、文字を選択できますが、信号は選択できません。を参照してください。 POSIX仕様の関連する章

SIGINTSIGQUITを除いて、シグナルを採用するための他のオプションはSIGTSTPです。これは、^Zでプロセスを停止できずに生きることができる場合です。とにかくフォアグラウンドで実行したままにすることを期待している場合は、推測が当てはまる可能性があります。)

2