Dlaczego są tylko dwa sygnały zdefiniowane przez użytkownika?


11

Na liście sygnałów zdefiniowanych w systemie linux znajdują się dwa sygnały określone jako sygnały zdefiniowane przez użytkownika ( SIGUSR1i SIGUSR2). Inne sygnały będą wychwytywane lub wychwytywane w określonych sytuacjach, ale SIGUSR są pozostawione do użytku aplikacji użytkownika.

Dlaczego więc tylko dwa sygnały?

Odpowiedzi:


13

Historycznie rzecz biorąc, Unix miał tylko te dwa sygnały, ale nowoczesne systemy mają sygnały w czasie rzeczywistym SIGRTMIN... SIGRTMAX.

Z powodu zwariowanej i niemożliwej do przeniesienia semantyki interfejsów API sygnałów, prawie nie ma przypadku użycia, w którym sygnały byłyby lepsze niż inne mechanizmy komunikacyjne, takie jak potoki. Dlatego przydzielenie nowego numeru sygnału nigdy nie było uważane za konieczne.


Dzięki. W moim przypadku obsługuję SIGUSR1 do rekonfiguracji. Oznacza to, że gdy administrator chce zmienić konfigurację mojego uruchomionego procesu, zmienia plik konfiguracyjny i wysyła SIGUSR1 do mojego PID (łatwiej tutaj użyć potoku). I używam SIGUSR2 do czystego zamknięcia procesu. Nie musiałem używać innego sygnału niż te dwa, ale niektóre funkcje środowiska wykonawczego można wdrożyć, obsługując sygnały zdefiniowane przez użytkownika!
saeedn

2
@saeedn Dlaczego nie używasz SIGTERM do czystego zamykania procesów? Po to jest. Wiele innych serwerów używa SIGHUP (co w innym przypadku ma znaczenie tylko w procesie interaktywnym) jako sygnału do przeładowania plików konfiguracyjnych, więc możesz to rozważyć.
Random832,

@ Random832 Masz rację, wiem, co mówisz. Ale problemem, o którym myślałem, było to, że gdy zabrakło mi 31 wyborów sygnałów?
saeedn

1
Gdzie mogę uzyskać więcej informacji o sygnałach SIGRTMIN ... SIGRTMAX? Gdzie są zdefiniowane, kiedy są używane?
Strubbl

6

Sygnały zapewniają jedynie prymitywny środek komunikacji. W szczególności nie ma możliwości dołączenia do nich żadnych informacji. Odbiorca zna tylko numer sygnału, a nie tożsamość nadawcy. Wiele sygnałów można połączyć w jeden. Biorąc pod uwagę wszystkie te ograniczenia, nie ma tak wielu przydatnych celów dla sygnałów.

Do bardziej złożonych celów używaj bardziej złożonych środków interakcji, takich jak rury lub gniazda.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.