Signal (Unix)
Når du bruger Unix- operativsystemet , er et signal en systemmeddelelse til en kørende proces . Signaler er en primitiv form for kommunikation mellem processer . De fleste signaler forårsager også en handling - normalt afslutter processen. Andre bruges dog kun til informationsformål (f.eks.SIGWINCH) eller kan stoppe en proces (SIGSTOP). Der er også signaler, der frit kan bruges af brugeren (SIGUSR1 og SIGUSR2). Nogle signaler kan opfanges eller undertrykkes af processen. Så fang z. B. nogle serverprogrammer (i Unix-jargon " daemon ") SIGUSR1 eller SIGUSR2 og læses derefter i deres konfigurationsfiler igen.
Almindelige UNIX-signaler
De sædvanlige signaler er angivet nedenfor med deres numre. De understøttede signaler og deres værdier kan variere fra system til system. POSIX.1-standarden giver forskellige numeriske værdier afhængigt af den anvendte hardwarearkitektur.
Den præfiks SIG er den korte formular for Signal.
Kommandoen kill -ludsender normalt alle understøttede signalnumre med deres tilknyttede navne. Tabellen nedenfor indeholder følgende værdier som et eksempel:
- Kolonne A: GNU C-bibliotek
- Kolonne B: Linux-, Alpha- og SPARC- arkitekturer
- Kolonne C: Linux, x86 , AMD64 , ARM og de fleste andre processorarkitekturer
- Kolonne D: Linux, MIPS
| signal | Værdier, synonym | Betyder | Betydning (oversat) | Oprindelig brug, standarder | |||
|---|---|---|---|---|---|---|---|
| EN. | B. | C. | D. | ||||
| SIGHUP | 1 | Hangout detekteret ved kontrol af terminal eller død af kontrolproces | Blokering af kontrolterminalen eller afslutningen af kontrolprocessen . | POSIX (1990) | |||
| SIGINT | 2 | Afbryd fra tastaturet; interaktivt opmærksomhedssignal. | Afbrydelse af tastatur interaktivt advarselssignal. | C89 ; POSIX (1990) | |||
| SIGQUIT | 3 | Afslut fra tastaturet. | Gå ud gennem tastaturet. | ||||
| SIGILL | 4. plads | Ulovlig instruktion. | Ugyldig instruktion. | C89; POSIX (1990) | |||
| SIGTRAP | 5 | Spor / brudpunktsfælde. | Stopmærket nået. | SUSv2 ; POSIX (2001) | |||
| SIGABRT | 6. | Unormal ophør afbryde signal fra afbrydelse (3). | unormal opsigelse . | C89; POSIX (1990) | |||
| SIGIOT | |||||||
| SIGIOT | 6. | IOT fælde; afbryde () på en PDP11. | 4.2BSD | ||||
| SIGABRT | |||||||
| SIGEMT | - | 7. | - | 7. | |||
| SIGBUS | 10 | 10 | 7. | 10 | BUS-fejl (dårlig hukommelsesadgang). | BUS-fejl ( hukommelsesadgangsfejl ). | 4.2BSD; SUSv2; POSIX (2001) |
| SIGFPE | 8. plads | "Undtagelse med flydepunkt": fejlagtig aritmetisk handling. | " Fejl ved undtagelse af flydende punkt ": forkert aritmetisk handling. | C89; POSIX (1990) | |||
| SIGKILL | 9 | Dræb, kan ikke blokeres. | Frakoblingsbar udgang. | POSIX (1990) | |||
| SIGUSR1 | 30. | 30. | 10 | 16 | Brugerdefineret signal 1. | Brugerdefineret signal 1. | POSIX |
| SIGSEGV | 11 | "Segmenteringsovertrædelse": ugyldig hukommelsesreference. | " Beskyttelsesfejl ": ugyldig hukommelsesreference. | C89; POSIX (1990) | |||
| SIGUSR2 | 31 | 31 | 12. | 17. | Brugerdefineret signal 2. | Brugerdefineret signal 2. | POSIX |
| SIGPIPE | 13. | "Brudt rør": skriv til rør uden læsere. | "Brudt rør ": Skrivning til et rør uden modtager. | POSIX (1990) | |||
| SIGALRM | 14. | Alarmur timer signal: alarm (2). | Alarmsignal: Alarm (2). | POSIX (1990) | |||
| SIGTERM | 15. | Opsigelsesanmodning. | Opsigelsesanmodning . | C89; POSIX (1990) | |||
| SIGSTKFLT | - | - | 16 | - | Stakfejl på coprocessor (ubrugt). | Stakfejl på coprocessor (ikke brugt). | |
| SIGCHLD | 20. | 20. | 17. | 18. | Barnestatus er ændret (stoppet eller afsluttet). | Barnestatus er blevet ændret (sat på pause eller afsluttet). | POSIX (1990) |
| SIGCLD | |||||||
| SIGCLD | 20. | - | - | - | Gammelt system V-navn; barnets status er ændret. | Old System V betegnelse; Barnestatus er blevet ændret. | System V |
| SIGCHLD | |||||||
| SIGCONT | 19. | 19. | 18. | 25 | Fortsæt stoppet proces. | Genoptag den pausede proces. | POSIX |
| SIGSTOP | 17. | 17. | 19. | 23 | Stop processen, kan ikke blokeres. | Stop processen, der kan blokeres. | POSIX |
| SIGTSTP | 18. | 18. | 20. | 24 | Stop med at skrive på tastaturet. | Indtast stop på tastaturet. | POSIX |
| SIGTTIN | 21. | 21. | 21. | 26. | Baggrund læst fra tty. | Læsning fra terminalen i baggrunden | POSIX |
| SIGTTOU | 22 | 22 | 22 | 27 | Baggrundsskrivning til tty | Skrivning på en terminal i baggrunden. | POSIX |
| SIGURG | 16 | 16 | 23 | 21. | Hastende tilstand på stikkontakten: data med høj båndbredde er tilgængelige. | Vigtig tilstand på stikkontakten: Data med høj båndbredde er tilgængelige. | 4.2BSD; SUSv2; POSIX (2001) |
| SIGXCPU | 24 | 24 | 24 | 30. | CPU-tidsgrænse overskredet. | Processorens tidsgrænse er overskredet. | 4.2BSD; SUSv2; POSIX (2001) |
| SIGXFSZ | 25 | 25 | 25 | 31 | Grænsen for filstørrelse overskredet. | Grænsen for filstørrelse overskredet. | 4.2BSD; SUSv2; POSIX (2001) |
| SIGVTALRM | 26. | 26. | 26. | 28 | Virtuelt vækkeur. | Virtuelt vækkeur. | 4.2BSD; SUSv2; POSIX (2001) |
| SIGPROF | 27 | 27 | 27 | 29 | Profilering af alarmur er udløbet. | 4.2BSD; SUSv2; POSIX (2001) | |
| SIGWINCH | - | 28 | 28 | 20. | Ændring af vinduesstørrelse. | Vinduesstørrelse ændret. | 4.3BSD; Sol |
| SIGPOLL | 23 | 23 / - | 29 / - | 23 / - | Der blev opstået en pollable begivenhed. | En begivenhed, der kan spørges, opstod. | System V; SUSv2; POSIX (2001) |
| SIGIO | |||||||
| SIGIO | 23 | 23 | 29 | 23 | I / O nu mulig. | I / O nu mulig. | 4.2BSD |
| SIGPOLL | |||||||
| SIGINFO | - | (29) | - | - | Statusanmodning fra tastaturet. | Statusanmodning via tastaturet. | macOS |
| SIGPWR | |||||||
| SIGLOST | - | (29) / - | - | - | Ubrugt; kun på Sparc: fillås mistet. | Ubrugt; kun under Sparc: fillås tabt. | |
| SIGPWR | - | (29) | 30. | 19. | Genstart af strømsvigt. | Strømsvigt forårsagede genstart. | System V |
| SIGINFO | |||||||
| SIGSYS | 12. | 12. | 31 | 12. | Dårligt systemopkald. | ugyldigt systemopkald . | System Vr4; SUSv2; POSIX (2001) |
| SIGUNUSERET | |||||||
| SIGUNUSERET | 12. | - | 31 / - | - | |||
| SIGSYS | |||||||
Nyere Linux- versioner bruger op til 32 ekstra signaler fra 33 (eller 34 eller 35 afhængigt af C-biblioteket) ( SIGRTMIN ) til 64 ( SIGRTMAX ) som realtidssignaler ud over de sædvanlige 31 signalnumre .
Handlinger
Programmernes standardopførsel, når de modtager et af signalerne, er et af følgende:
- Stop (slutter ikke) det kørende program.
- Genoptag det tidligere stoppede program.
- Afslutter programmet uden hukommelsesdump.
- Afslut programmet ved at skrive en hukommelsesdump.
- Ignorer signalet.
Bortset fra SIGKILL og SIGSTOP kan signalerne "opfanges" af programmet og udløse en anden reaktion.
Se også
Den UNIX-kommando drab kan bruges til at sende nogen signaler under Unix.