Linux- ը աջակցում է ինչպես POSIX հուսալի ազդանշանների (այսուհետ `ստանդարտ ազդանշաններ), այնպես էլ POSIX- ի իրական ժամանակի ազդանշանների:
Ստանդարտ ազդանշաններ
Linux- ը սատարում է ստորեւ թվարկված ստանդարտ ազդանշաններ: Մի քանի ազդանշանային համարներ ճարտարապետության կախվածությունն են, ինչպես նշված է «արժեքի» սյունակում: (Որտեղ երեք արժեք է տրվում, առաջինը սովորաբար գործում է ալֆա եւ sparc- ի համար, միջինը մեկը, i386, ppc եւ sh, եւ վերջինը, mips- ի համար:
A- նշանակում է, որ համապատասխան ճարտարապետության ազդանշանը բացակայում է:)
Աղյուսակի «Գործողության» սյունակում գրառումները նշում են ազդանշանի լռելյայն ակցիան, ինչպես հետեւյալը.
Ժամկետը
Նախնական գործողությունն այն է, որ գործընթացը դադարեցվի:
Կիրառեք
Default գործողությունը արհամարհել ազդանշանը:
Core
Նախնական գործողությունն այն է, դադարեցնել գործընթացը եւ թափոնները:
Դադարեցրեք
Default գործողությունն այն է, դադարեցնել գործընթացը:
Նախ, բնօրինակը POSIX.1 ստանդարտում նկարագրված ազդանշաններ:
Ազդանշան | Արժեքը | Գործողություն | Մեկնաբանություն |
կամ վերահսկման գործընթացի մահը | |||
SIGINT- ը | 2 | Ժամկետը | Անջատել ստեղնաշարի վրա |
SIGQUIT- ը | 3 | Core | Անջատեք ստեղնաշարի վրա |
ՍԻԳԻԼ | 4 | Core | Անօրինական ուսուցում |
ՍԻԳԱԲՐՏ | 6 | Core | Անջատել ազդանշանն անջատվածից (3) |
SIGFPE- ը | 8 | Core | Լողացող կետի բացառություն |
ՍԻԳԿԻԼ | 9 | Ժամկետը | Սպանեք ազդանշան |
ՍԻԳՍԵԳՎ | 11 | Core | Հիշողության հիշողությունը սխալ է |
SIGPIPE | 13 | Ժամկետը | Կտրված խողովակ `գրեք խողովակ` առանց ընթերցողների |
SIGALRM | 14 | Ժամկետը | Տագնապային ազդանշան ահազանգից (2) |
ՍԻԳԵՐՄ | 15 | Ժամկետը | Դադարեցման ազդանշան |
SIGUSR1 | 30,10,16 | Ժամկետը | Օգտագործողի կողմից սահմանված ազդանշան 1 |
SIGUSR2 | 31,12,17 | Ժամկետը | Օգտագործողի կողմից սահմանված ազդանշան 2 |
SIGCHLD- ը | 20,17,18 | Կիրառեք | Երեխայի դադարեցումը կամ դադարեցումը |
SIGCONT- ը | 19,18,25 | Շարունակեք, եթե դադարեցվի | |
SIGSTOP | 17,19,23 | Դադարեցրեք | Stop գործընթացը |
SIGTSTP- ը | 18,20,24 | Դադարեցրեք | Դադարեցվել է տտում |
SIGTTIN | 21,21,26 | Դադարեցրեք | tty ներդրումը ֆոնային գործընթացի համար |
ՍԻԳՏՏՈՒ | 22,22,27 | Դադարեցրեք | ֆոնային գործընթացի համար |
SIGKILL- ի եւ SIGSTOP- ի ազդանշանները չեն կարող բռնել, արգելափակել կամ անտեսվել:
Հաջորդը POSIX.1 ստանդարտում չկան, սակայն նկարագրված է SUSv2 եւ SUSv3 / POSIX 1003.1-2001:
Ազդանշան | Արժեքը | Գործողություն | Մեկնաբանություն |
ՍԻԳՊՈԼԼ | Ժամկետը | Pollable event (Sys V): SIGIO- ի հոմանիշը | |
ՍԻԳՊՈՖ | 27,27,29 | Ժամկետը | Պրոֆիլինգի ժամանակաչափը սպառվեց |
SIGSYS- ը | 12, -, 12 | Core | Սխալ փաստարկ ռեժիմին (SVID) |
SIGTRAP- ը | 5 | Core | Trace / breakpoint թակարդը |
Սիգուրգ | 16,23,21 | Կիրառեք | Շտապ պայմանը սալիկի վրա (4.2 BSD) |
SIGVTALRM | 26,26,28 | Ժամկետը | Վիրտուալ զարթուցիչ (4.2 BSD) |
SIGXCPU | 24,24,30 | Core | CPU ժամկետը գերազանցեց (4.2 BSD) |
SIGXFSZ | 25,25,31 | Core | Ֆայլի չափի սահմանաչափը գերազանցեց (4.2 BSD) |
Մինչեւ Linux 2.2, SIGSYS- ի , SIGXCPU- ի , SIGXFSZ- ի եւ SIGBUS- ի ( SPARC- ից եւ MIPS- ից այլ ճարտարապետների վրա) կանխադրված վարքագիծը դադարեցրեց գործընթացը (առանց հիմնական վերգետնյա ): (Որոշ այլ ստորաբաժանումների համար SIGXCPU- ի եւ SIGXFSZ- ի լռելյայն ակցիան է առանց դադարեցնելու գործընթացը: Linux 2.4- ը համապատասխանում է այդ ազդանշանների համար POSIX 1003.1-2001 պահանջներին `դադարեցնելով հիմնական վերգետնյա գործընթացը:
Հաջորդ հաջորդ տարբեր ազդանշաններ:
Ազդանշան | Արժեքը | Գործողություն | Մեկնաբանություն |
SIGEMT- ը | 7, -, 7 | Ժամկետը | |
SIGSTKFLT | -, 16, - | Ժամկետը | Stack- ի սխալը coprocessor- ում (չօգտագործված) |
SIGIO- ն | 23,29,22 | Ժամկետը | I / O հնարավոր է (4.2 BSD) |
SIGCLD- ը | -, -, 18 | Կիրառեք | SIGCHLD- ի հոմանիշը |
SIGPWR | 29,30,19 | Ժամկետը | Էլեկտրաէներգիայի ձախողում (System V) |
Սիգինֆո | 29, -, - | SIGPWR- ի հոմանիշը | |
SIGLOST- ը | -, -, - | Ժամկետը | Ֆայլի կողպեք կորցրած |
SIGWINCH- ը | 28,28,20 | Կիրառեք | Պատուհանների չափափոխման ազդանշան (4.3 BSD, Sun) |
SIGUNUSED- ը | -, 31, - | Ժամկետը | Չօգտագործված ազդանշան (SIGSYS) |
(29-ը ազդանշան է SIGINFO / SIGPWR ալֆայի վրա, սակայն SIGLOST- ի վրա sparc- ով ):
SIGEMT- ը նշված չէ POSIX 1003.1-2001-ում, սակայն երբեմն հայտնվում է շատ այլ Unices- ում, որտեղ նրա կանխադրված գործողությունը սովորաբար դադարեցնում է վերամշակման հիմնական գործընթացը:
SIGPWR- ը (որը չի նշված POSIX 1003.1-2001-ում) սովորաբար անտեսվում է այն մյուս Համայնապատկերներում, որտեղ այն հայտնվում է:
SIGIO (որը նշված չէ POSIX 1003.1-2001-ում) անտեսվում է մի քանի այլ Unices- ի վրա:
Իրական ժամանակի ազդանշաններ
Linux- ը աջակցում է իրական ժամանակի ազդանշաններ, ի սկզբանե POSIX.4 իրական ժամանակի ընդլայնման մեջ (եւ այժմ ներառված է POSIX 1003.1-2001): Linux- ն աջակցում է 32 իրական ժամանակի ազդանշանների, որոնք թվագրված են 32 ( SIGRTMIN ) -ից մինչեւ 63 ( SIGRTMAX ): (Ծրագրերը միշտ պետք է վերաբերվեն իրական ժամանակի ազդանշաններին, օգտագործելով SIGRTMIN + n նշումը, քանի որ իրական ժամանակի ազդանշանի համարների տատանումը տարբերվում է Unices- ի վրա):
Ի տարբերություն ստանդարտ ազդանշանների, իրական ժամանակի ազդանշաններն ունեն ոչ մի նախադեպային նշանակություն `իրական ժամանակի ազդանշանների ողջ փաթեթը կարող է օգտագործվել կիրառելի նպատակների համար: (Նշենք, սակայն, որ LinuxThreads- ի իրականացումն օգտագործում է առաջին երեք իրական ժամանակի ազդանշանները:)
Չկատարված իրական ժամանակի ազդանշանի կանխադրված գործողությունը դադարեցնելու ընդունման գործընթացը:
Իրական ժամանակի ազդանշաններն առանձնանում են հետեւյալով.
- Իրական ժամանակի ազդանշանների բազմակի դեպքերը կարող են հերթին լինել: Ընդհակառակը, եթե ստանդարտ ազդանշանի մի քանի դեպք է ներկայացվում, մինչդեռ այդ ազդանշանը ներկայումս արգելափակված է, ապա միայն մեկ դեպք է հերթագրվում:
- Եթե ազդանշանը ուղարկվում է օգտագործելով sigqueue (2), ուղեկցող արժեքը (կամ integer կամ ցուցիչ) կարող է ուղարկվել ազդանշանի հետ: Եթե ընդունման գործընթացը սահմանում է ազդանշան այս ազդանշանի համար, օգտագործելով SA_SIGACTION դրոշը sigaction- ին (2), ապա այն կարող է ձեռք բերել այս տվյալները, siginfo_t- ի si_value դաշտի միջոցով, որը փոխանցողին տրված երկրորդ փաստարկն է: Բացի այդ, այս կառուցվածքի si_pid եւ si_uid դաշտերը կարող են օգտագործվել PID- ը եւ ազդանշանի ուղարկող գործընթացի իրական օգտագործողի ID:
- Իրական ժամանակի ազդանշանները մատուցվում են երաշխավորված կարգով: Միեւնույն տիպի բազմակի իրական ժամանակի ազդանշաններն ուղարկվում են իրենց ուղարկված կարգում: Եթե գործընթացին ուղարկվում են տարբեր ժամանակային ազդանշաններ, դրանք առաքվում են սկսած ամենացածր թվանշանով: (Այսինքն, ցածր համարակալված ազդանշաններն ունեն առավելագույն առաջնահերթություն):
Եթե երկուսն էլ ստանդարտ եւ իրական ժամանակի ազդանշանները սպասում են գործընթացին, POSIX- ը թողնում է այն, թե ինչն է նախանշված: Linux- ը, ինչպես շատ այլ ներդրումներ, այս դեպքում գերադասում է ստանդարտ ազդանշաններ:
POSIX- ի համաձայն, կատարումը պետք է թույլ տա առնվազն _POSIX_SIGQUEUE_MAX (32) իրական ժամանակի ազդանշաններ, որոնք պետք է հերթագրվեն գործընթացին: Այնուամենայնիվ, ոչ թե մեկ պրոցեսինգային սահմանը տեղադրելու փոխարեն, Linux- ը բոլոր գործընթացների համար սահմանում է հերթական իրական ազդանշանների քանակի վրա համակարգային լայն սահման:
Այս սահմանը կարելի է դիտարկել (եւ արտոնությամբ) փոխվել / proc / sys / kernel / rtsig-max ֆայլով: Առնչվող ֆայլ, / proc / sys / kernel / rtsig-max , կարող են օգտագործվել, թե արդյոք իրական ժամանակի ազդանշանները ներկայումս պահվում են:
ՊԱՏԱՍԽԱՆ
POSIX.1
Կարեւոր է. Օգտագործեք հրամանատարությունը ( % մարդ ), որպեսզի տեսնեք, թե ինչպես է օգտագործվում հրամանը ձեր որոշակի համակարգչում: