ユーザー定義信号が2つしかないのはなぜですか?


11

Linuxシステムで定義されている信号のリストには、ユーザー定義信号(SIGUSR1およびSIGUSR2)として記述されている2つの信号があります。その他のシグナルは特定の状況で発生またはキャッチされますが、SIGUSRはユーザーアプリケーションの使用に残されます。

では、なぜ2つの信号だけなのでしょうか。

回答:


13

歴史的に、Unixのは、これらの2つの信号を持っていたが、最近のシステムはリアルタイムシグナルを持っていますSIGRTMIN... SIGRTMAX

シグナルAPIの奇抜で移植性のないセマンティクスのため、パイプのような他の通信メカニズムよりもシグナルが優先されるユースケースはほとんどありません。したがって、新しいシグナル番号を割り当てる必要があると見なされたことはありません。


ありがとう。私の場合、再構成のためにSIGUSR1を処理します。これは、管理者が実行中のプロセスの構成を変更したい場合に、構成ファイルを変更し、SIGUSR1をPIDに送信することを意味します(ここでパイプを使用する方が簡単です)。そして、私はクリーンプロセスのシャットダウンにSIGUSR2を使用しています。これら2つ以外の信号を使用する必要はありませんでしたが、他のユーザー定義の信号を処理することで、いくつかのランタイム機能を実装できました。
saeedn

2
@saeednクリーンプロセスのシャットダウンにSIGTERMを使用しないのはなぜですか。それが目的です。他の多くのサーバーは、構成ファイルを再ロードするためのシグナルとしてSIGHUP(他の方法では対話型プロセスでのみ意味があります)を使用するため、それを検討するかもしれません。
Random832 2012

@ Random832あなたは正しい、私はあなたの言うことを知っています。しかし、私が考えていた問題は、31の信号選択を使い果たした場合はどうなるかということでした。
saeedn

1
SIGRTMIN ... SIGRTMAXシグナルに関する詳細情報はどこで入手できますか?使用時にどこで定義されていますか?
Strubbl 2013年

6

信号は基本的な通信手段を提供するだけです。特に、情報を添付する方法はありません。受信者は信号番号のみを知っており、送信者の身元は知りません。複数の信号を1つに統合できます。これらのすべての制限を考えると、信号の多くの有用な目的はありません。

より複雑な目的のために、パイプやソケットなどの相互作用のより複雑な手段を使用します。

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