Linux obsługuje zarówno niezawodne sygnały POSIX (zwane dalej "sygnałami standardowymi"), jak i sygnały czasu rzeczywistego POSIX.
Standardowe sygnały
Linux obsługuje standardowe sygnały wymienione poniżej. Kilka numerów sygnałów zależy od architektury, jak wskazano w kolumnie "Wartość". (Tam, gdzie podane są trzy wartości, pierwsza jest zwykle ważna dla alpha i sparc, środkowa dla i386, ppc i sh, a ostatnia dla mips.
A - oznacza brak sygnału w odpowiedniej architekturze.)
Wpisy w kolumnie "Czynność" tabeli określają domyślną akcję dla sygnału, jak następuje:
Semestr
Domyślną akcją jest zakończenie procesu.
Ign
Domyślną akcją jest zignorowanie sygnału.
Rdzeń
Domyślną akcją jest zakończenie procesu i zrzut rdzenia.
Zatrzymać
Domyślną akcją jest zatrzymanie procesu.
Najpierw sygnały opisane w oryginalnym standardzie POSIX.1.
| Sygnał | Wartość | Akcja | Komentarz |
| lub śmierć procesu kontrolowania | |||
| SIGINT | 2 | Semestr | Przerwanie z klawiatury |
| SIGQUIT | 3 | Rdzeń | Wyjdź z klawiatury |
| SIGILL | 4 | Rdzeń | Nielegalna instrukcja |
| SIGABRT | 6 | Rdzeń | Przerwij sygnał z anulować (3) |
| SIGFPE | 8 | Rdzeń | Punkt zmienny wyjątek |
| SIGKILL | 9 | Semestr | Zabij sygnał |
| SIGSEGV | 11 | Rdzeń | Nieprawidłowe odwołanie do pamięci |
| SIGPIPE | 13 | Semestr | Przerwana rura: napisz do rury bez czytników |
| SIGALRM | 14 | Semestr | Sygnał zegara z alarm (2) |
| SIGTERM | 15 | Semestr | Sygnał zakończenia |
| SIGUSR1 | 30,10,16 | Semestr | Sygnał zdefiniowany przez użytkownika 1 |
| SIGUSR2 | 31,12,17 | Semestr | Sygnał zdefiniowany przez użytkownika 2 |
| SIGCHLD | 20,17,18 | Ign | Dziecko zostało zatrzymane lub zakończone |
| SIGCONT | 19,18,25 | Kontynuuj, jeśli zatrzymałeś | |
| SIGSTOP | 17,19,23 | Zatrzymać | Zatrzymaj proces |
| SIGTSTP | 18,20,24 | Zatrzymać | Przestań pisać na tty |
| SIGTTIN | 21,21,26 | Zatrzymać | tty input dla procesu w tle |
| SIGTTOU | 22,22,27 | Zatrzymać | wyjście tty dla procesu w tle |
SygnałySIGKILL iSIGSTOP nie mogą zostać złapane, zablokowane lub zignorowane.
Następnie sygnały spoza standardu POSIX.1, ale opisane w SUSv2 i SUSv3 / POSIX 1003.1-2001.
| Sygnał | Wartość | Akcja | Komentarz |
| SIGPOLL | Semestr | Zdarzenie pollable (Sys V). Synonim SIGIO | |
| SIGPROF | 27,27,29 | Semestr | Minął czas odliczania |
| SIGSYS | 12,-,12 | Rdzeń | Zły argument do rutyny (SVID) |
| SIGTRAP | 5 | Rdzeń | Trace / pułapka pułapkowa |
| SIGURG | 16,23,21 | Ign | Pilny stan na gnieździe (4.2 BSD) |
| SIGVTALRM | 26,26,28 | Semestr | Wirtualny budzik (4.2 BSD) |
| SIGXCPU | 24,24,30 | Rdzeń | Przekroczono limit czasu procesora (4.2 BSD) |
| SIGXFSZ | 25,25,31 | Rdzeń | Przekroczono limit rozmiaru pliku (4.2 BSD) |
Do Linux 2.2 włącznie, domyślne zachowanie dlaSIGSYS, SIGXCPU, SIGXFSZi (na architekturach innych niż SPARC i MIPS)SIGBUS było zakończenie procesu (bez zrzutu pamięci). (W niektórych innych Unices domyślną akcję dlaSIGXCPU iSIGXFSZ jest zakończenie procesu bez zrzutu pamięci.) Linux 2.4 jest zgodny z wymaganiami POSIX 1003.1-2001 dla tych sygnałów, kończąc proces zrzutu pamięci.
Kolejne różne inne sygnały.
| Sygnał | Wartość | Akcja | Komentarz |
| SIGEMT | 7,-,7 | Semestr | |
| SIGSTKFLT | -,16,- | Semestr | Błąd stosu na koprocesorze (nieużywany) |
| SIGIO | 23,29,22 | Semestr | I / O teraz możliwe (4.2 BSD) |
| SIGCLD | -,-,18 | Ign | Synonim dla SIGCHLD |
| SIGPWR | 29,30,19 | Semestr | Awaria zasilania (System V) |
| SIGINFO | 29,-,- | Synonim SIGPWR | |
| SIGLOST | -,-,- | Semestr | Zgubiono blokadę pliku |
| SIGWINCH | 28,28,20 | Ign | Sygnał zmiany rozmiaru okna (4.3 BSD, Sun) |
| SIGUNUSED | -,31,- | Semestr | Nieużywany sygnał (będzie SIGSYS) |
(Sygnał 29 toSIGINFO / SIGPWR na alfa, aleSIGLOST na sparc.)
SIGEMT nie jest określony w POSIX 1003.1-2001, ale nigdy nie pojawia się na większości innych Uniksów, gdzie jego domyślną akcją jest zwykle kończenie procesu za pomocą zrzutu pamięci.
SIGPWR (które nie jest określone w POSIX 1003.1-2001) jest zwykle domyślnie ignorowane w innych Uniksach, w których się pojawia.
SIGIO (który nie jest określony w POSIX 1003.1-2001) jest domyślnie ignorowany w kilku innych Uniksach.
Sygnały w czasie rzeczywistym
Linux obsługuje sygnały czasu rzeczywistego, które zostały pierwotnie zdefiniowane w rozszerzeniach czasu rzeczywistego POSIX.4 (i teraz są zawarte w POSIX 1003.1-2001). Linux obsługuje 32 sygnały czasu rzeczywistego, ponumerowane od 32 (SIGRTMIN) do 63 (SIGRTMAX). (Programy powinny zawsze odnosić się do sygnałów w czasie rzeczywistym za pomocą notacjiSIGRTMIN+ n, ponieważ zakres liczb sygnałów w czasie rzeczywistym różni się w zależności od Unice.)
W przeciwieństwie do standardowych sygnałów, sygnały czasu rzeczywistego nie mają wcześniej zdefiniowanych znaczeń: cały zestaw sygnałów czasu rzeczywistego może być wykorzystywany do celów zdefiniowanych przez aplikację. (Pamiętaj jednak, że implementacja LinuxThreads wykorzystuje pierwsze trzy sygnały czasu rzeczywistego.)
Domyślnym działaniem dla nieobsługiwanego sygnału czasu rzeczywistego jest zakończenie procesu odbierania.
Sygnały w czasie rzeczywistym są rozróżniane przez:
- Wiele instancji sygnałów czasu rzeczywistego można umieścić w kolejce. W przeciwieństwie do tego, jeśli wiele wystąpień standardowego sygnału zostanie dostarczonych, gdy ten sygnał jest aktualnie zablokowany, wówczas tylko jedna instancja jest umieszczana w kolejce.
- Jeśli sygnał zostanie wysłany za pomocąsigqueue(2), dołączona wartość (albo liczba całkowita, albo wskaźnik) może zostać wysłana wraz z sygnałem. Jeśli proces odbierania ustanowi procedurę obsługi dla tego sygnału za pomocąSA_SIGACTION flaga dosigaction(2) następnie może uzyskać te dane za pośrednictwem si_value dziedzinie siginfo_t struktura przekazana jako drugi argument do obsługi. Ponadto si_pid i si_uid pola tej struktury można wykorzystać do uzyskania PID i rzeczywistego ID użytkownika procesu wysyłającego sygnał.
- Sygnały w czasie rzeczywistym są dostarczane w gwarantowanej kolejności. Wiele sygnałów czasu rzeczywistego tego samego typu jest dostarczanych w kolejności, w jakiej zostały wysłane. Jeżeli różne sygnały czasu rzeczywistego są wysyłane do procesu, są dostarczane z sygnałem o najniższym numerze. (Tj. Sygnały o niskim numerze mają najwyższy priorytet).
Jeśli zarówno sygnał standardowy, jak i czasu rzeczywistego oczekuje na proces, POSIX pozostawia go nieokreślonym, który jest dostarczany jako pierwszy. Linux, podobnie jak wiele innych implementacji, daje pierwszeństwo standardowym sygnałom w tym przypadku.
Zgodnie z POSIX, implementacja powinna umożliwiać kolejkowanie do procesu co najmniej _ _POSIX_SIGQUEUE_MAX (32) sygnałów w czasie rzeczywistym. Jednak zamiast umieszczać limit na przetwarzanie, Linux narzuca systemowe ograniczenie liczby oczekujących sygnałów w czasie rzeczywistym dla wszystkich procesów.
Limit ten można przeglądać (i z uprawnieniami) zmieniony przez / proc / sys / kernel / rtsig-max plik. Powiązany plik, / proc / sys / kernel / rtsig-max , może być użyty do sprawdzenia, ile sygnałów w czasie rzeczywistym jest aktualnie w kolejce.
ZGODNE Z
POSIX.1
Ważny: Użyj mężczyzna dowództwo ( % mężczyzna ), aby zobaczyć, jak polecenie jest używane na danym komputerze.




