私はアプリケーションを開発しており、要求に応じていくつかのランタイム統計をコンソールに印刷できるようにしたいです。kill
私はすぐに信号を考えた。
最後まで読んでUnix信号ウィキでは、次のSIGINFO
理由でこれが行く方法だと思います。
- これは故意にこの目的のために
- シグナルハンドラが実装されていないと、プロセスは終了しません
SIGUSRx
。ここ)
しかし、出力を調べると、kill -l
私のサーバーはこの信号を実装していないようです。
私の質問は次のとおりです
- なぜ
SIGINFO
私のシステムにないのですか?すべてのGNU Linuxシステムで使用できませんか? - このシグナルを有効にする簡単な(つまり、カーネル/ glibcの再コンパイルが不要な)方法はありますか?そうでなければどんな難しい道がありましたか?
- 目的を達成するためにどの代替信号を使用できますか?いかなる副作用も引き起こさない対象プロセスで処理されない場合(他の適切な信号が見つからなかったので、「いいえ」と仮定しました。glibc手動)
Linuxメタ情報:
Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux
修正する:私はこの信号がBSD以外のシステムから条件付きで除外される理由に関する詳細情報を探しています(以下の説明を参照)。このシグナルは多くの目的に非常に役立つように思われるので、これは単なる気まぐれな質問であると信じることは困難です。それでは、Linuxでこの信号を使用できる本当のハイライトは何ですか?
ベストアンサー1
これを追加することについての議論がありました(Linux 0.x-1.x時代)(BSDシステムで役に立ったからです)。しかし、私の記憶が正しい場合、当時のLinuxで正しいことをするのは、Linuxよりもはるかに悪かったです。 BSDより難しい理由があります。
機能の小さな部分(つまり、カーネルがプロセスグループにstty info
機能を渡すことを可能にするcontrol-Tエントリについて話しています)についてのみ尋ねることです。その部分は「簡単」ですが、カーネルに報告するようにしてください。関連プロセス状態情報SIGINFO
tty
いいえ信号処理(当時これをサポートする項目がほとんどなかったため、この機能はほとんど「このプロセスが回転しているか停止していますか?」および「正確にどのプロセスですか?」に関するものです)ははるかに困難でした。さらにセキュリティ/信頼問題もありました。 ISTR情報正確にこの情報とセキュリティ上の注意キーパスに関連付ける必要があるかどうかを示します。つまり、信号だけを送信する「簡単な」バージョンにはある程度の価値があるかもしれません。
(個人的な記憶に基づいています。高速なWeb検索で明確な内容は出ていませんが、より深く掘り下げる必要があるようです。本物議論のために古いアーカイブを見つけることができます。 )