私はアプリケーションを開発していますが、必要に応じていくつかのランタイム統計をコンソールに出力したいと考えています。 kill
と信号がすぐに思い浮かびました。
Wikiで nixシグナル を読むと、SIGINFO
は次の理由で進む方法のように見えます。
SIGUSRx
とは逆-参照 ここ )ただし、kill -l
の出力を調べると、サーバーにこの信号が実装されていないようです。
SIGINFO
がないのはなぜですか?すべてのGNU Linuxシステムに存在しませんか?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で利用できる本当のショートッパーは何ですか?
これを追加する話が(linux 0.x-1.x時代に)ありましたが(BSDシステムで有用だったため)、私が正しく思い出せば、当時はBSDよりもLinuxで正しく実行するのが難しい理由がありました。 。
あなたが求めているのは機能のほんの一部にすぎないことに注意してください(つまり、あなたはstty info
control-Tのエントリにより、カーネルはSIGINFO
をtty
のプロセスグループに配信します)-その部分は「簡単」ですが、カーネルにプロセスステータスに関する情報を報告させる- しない信号を処理します(それをサポートするものはほとんどなかったため、機能は主に「このプロセスが回転しているかハングしているか」と「とにかくそれがどのプロセスであるか」に関するものでした)が難しい-ISTRその情報を正確に表示すること、およびそれをセキュアアテンションキーパスに関連付ける必要があるかどうかについて、セキュリティ/信頼の問題さえあります。とはいえ、信号を送信するだけの「簡単な」バージョンには何らかの価値があるかもしれません...
(個人的な記憶から。クイックWeb検索では明らかなことは何も見つかりませんが、ディスカッションを見つけるにはreally古いアーカイブを掘り下げる必要があると思います。)
あなたの質問について1):
Arch Linuxシステムのman 7 signal
から:
[〜#〜] siginfo [〜#〜] 29、-、-同義語[〜#〜] sigpwr [〜#〜]
…
(信号29は[〜#〜] siginfo [〜#〜]/[〜#〜] sigpwr [〜#〜]アルファでは[ 〜#〜] siglost [〜#〜] sparcで。)
…
[〜#〜] sigpwr [〜#〜](POSIX.1-2001では指定されていない)は、通常、他のUNIXシステムではデフォルトで無視されます。
この定義では、SIGINFO
はalphaまたはsparcアーキテクチャでのみ使用できます。