GNU Linux(Arch Linux)上のSIGINFOがない


12

私はアプリケーションを開発していますが、必要に応じていくつかのランタイム統計をコンソールに出力したいと考えています。killすぐに信号が浮かんできました。

WikiでUnixシグナルを読むSIGINFOことは、次の理由で進むべき道のようです。

  • それはされて意図これらの目的のために
  • シグナルハンドラが実装されていない場合はプロセスを終了しません(逆にSIGUSRx- ここを参照)

ただし、の出力を調べるkill -lと、サーバーにこの信号が実装されていないようです。

私の質問は:

  1. なぜSIGINFO私のシステムにはないのですか?すべてのGNU Linuxシステムに存在しませんか?
  2. この信号を有効にする簡単な方法(つまり、カーネル/ glibc再コンパイルなし)はありますか?ない場合、難しい方法は何ですか?
  3. ターゲットプロセスで処理されない場合に副作用を引き起こさない、目的に使用できる代替シグナルは何ですか?(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で利用可能になる本当のショートッパーは何ですか?


2
^Tの出力に表示されますかstty -a
Mark Plotnick、2015年

ああ、それはそうではありません- dd私のMac での説明された動作を誤解したに違いありません。Linuxマシンでは実行^T中にdd何も実行されません-私はそれに応じて質問を更新します。
Robert Rossmann、2015年

ええ、Ctrl-TとSIGINFOはBSD(およびMacOSX)の機能です。
Mark Plotnick、2015年

しかし、信号はLinuxシステムが使用するGNU Cライブラリで定義されてます...それは故意に無効にされますか?
Robert Rossmann

1
@RobertRossmann、信号はカーネルによって配信されます。問題は、なぜLinuxカーネルがそれを実装しないのかです(おそらく、SysVシグナルをコピーしたためです)。
アンヘル・

回答:


4

これを追加する話(Linux 0.x-1.x時代に戻った)がありましたが(これはBSDシステムで有用だったため)、私が正しく思い出せば、当時BSDよりもLinuxで正しく実行することが困難であった理由がありました。 。

あなたが尋ねているのは機能のほんの一部にすぎないことに注意してください(つまり、あなたはstty infocontrol-Tのエントリについて話しているので、カーネルSIGINFOttyのプロセスグループに配信されます)-その部分は「簡単」です-しかし、シグナルを処理しない場合にカーネルがプロセスのステータスに関する情報を報告するようにます(現時点ではそれをサポートするものはほとんどないため、この機能は主に「このプロセスが回転しているかハングしているか」と「どのプロセスがとにかくそれはより難しい」-ISTRは、その情報を正確に表示すること、およびそれをセキュアアテンションキーパスに関連付ける必要があるかどうかについて、セキュリティ/信頼の問題さえあります。とはいえ、信号を送信するだけの「簡単な」バージョンには何らかの価値があるかもしれません...

(個人的な記憶から。クイックWeb検索では明らかなことは何も見つかりませんが、議論を見つけるには本当に古いアーカイブを掘り下げる必要があると思います。)


1

あなたの質問について1):

man 7 signalアーチのLinuxシステム上で:

SIGINFO 29、-、- SIGPWRの同義語

(シグナル29はアルファではSIGINFO / SIGPWR ですが、sparc ではSIGLOSTです。)

SIGPWR (POSIX.1-2001では指定されていません)は、通常、それが表示される他のUNIXシステムではデフォルトで無視されます。

この定義でSIGINFOは、alphaまたはsparcアーキテクチャでのみ使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.