Neden sadece iki tane kullanıcı tanımlı sinyal var?


11

Bir linux sisteminde tanımlanan sinyaller listesinde, Kullanıcı Tanımlı sinyaller ( SIGUSR1ve SIGUSR2) olarak belirtilen iki sinyal vardır . Diğer sinyaller belirli durumlarda yükseltilecek veya yakalanacaktır, ancak SIGUSR'ler kullanıcı uygulamasının kullanımı için bırakılmıştır.

Öyleyse neden sadece iki sinyal?

Yanıtlar:


13

Tarihsel olarak, Unix sadece bu iki sinyal vardı, ama modern sistemler gerçek zamanlı sinyallere sahip SIGRTMIN... SIGRTMAX.

Sinyal API'lerinin tuhaf ve taşınabilir anlambilimi nedeniyle, sinyallerin borular gibi diğer iletişim mekanizmalarına göre tercih edileceği neredeyse hiçbir kullanım durumu yoktur. Bu nedenle, yeni bir sinyal numarası tahsis edilmesi hiçbir zaman gerekli görülmemiştir.


Teşekkürler. Benim durumumda SIGUSR1'i yeniden yapılandırma için kullanıyorum. Yönetici, çalışan işlemimin yapılandırmasını değiştirmek istediğinde, yapılandırma dosyasını değiştirir ve PID'ime bir SIGUSR1 gönderir (burada bir boru kullanmak daha kolay). Ve temiz işlem kapatma için SIGUSR2 kullanıyorum. Bu ikisinden başka bir sinyal kullanmam gerekli değildi, ancak diğer çalışma zamanı özellikleri diğer kullanıcı tanımlı sinyalleri işleyerek uygulanabilir!
saeedn

2
@saeedn Temiz işlem kapatma için neden SIGTERM kullanmıyorsunuz? Bunun için. Diğer birçok sunucu, yapılandırma dosyalarını yeniden yüklemek için bir sinyal olarak SIGHUP (yalnızca etkileşimli bir işlemde anlamlıdır) kullanır, bu nedenle bunu düşünebilirsiniz.
Random832

@ Random832 Haklısın, ne dediğini biliyorum. Ama düşündüğüm sorun, 31 sinyal seçimimden kaçarsam ne olurdu?
saeedn

1
SIGRTMIN ... SIGRTMAX sinyalleri hakkında daha fazla bilgiyi nereden alabilirim? Kullanıldıklarında nerede tanımlanırlar?
Strubbl

6

Sinyaller sadece ilkel bir iletişim aracı sağlar. Özellikle, onlara herhangi bir bilgi eklemenin bir yolu yoktur. Alıcı, gönderenin kimliğini değil, yalnızca sinyal numarasını bilir. Birden fazla sinyal bir taneyle birleştirilebilir. Tüm bu kısıtlamalar göz önüne alındığında, sinyaller için bu kadar kullanışlı amaç yoktur.

Daha karmaşık amaçlar için, borular veya soketler gibi daha karmaşık etkileşimler kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.