Дохио - Linux / Unix Command

Линукс нь POSIX найдвартай дохио (цаашид "стандарт дохио") болон POSIX бодит цагийн дохионуудыг дэмждэг.

Стандарт дохио

Линукс доор дурдсан стандарт дохиог дэмждэг. Хэд хэдэн дохионы тоо нь "Утга" баганад харуулснаар архитектур хамааралтай байдаг. (Гурван утгыг өгөгдсөн бол эхнийх нь альфа болон sparc-д, i386, ppc, sh-д зориулсан дунд, мөн хамгийн сүүлийнх нь мембранд зориулагдсан байдаг.

A - харгалзах архитектур дээр дохио байхгүй байгааг илэрхийлнэ.)

Хүснэгтийн "Үйлдлийн" баганын оруулгууд дохионуудын анхдагч арга хэмжээг зааж өгдөг:

Хугацаа

Анхдагч үйлдэл нь процессийг цуцлах явдал юм.

Ign

Анхдагч үйлдэл нь дохио өгөхгүй байх явдал юм.

Гол

Анхдагч үйлдэл нь процесс болон dump цөмийг зогсоох явдал юм.

Зогс

Анхдагч үйлдэл нь процессийг зогсоох явдал юм.

Анхдагч POSIX.1 стандартад заасан дохио.

Дохиолол Утга Үйлдэл Сэтгэгдэл бичих
эсвэл хяналтын үйл явцын үхэл
SIGINT 2 Хугацаа Гараас тасалдал хийх
SIGQUIT 3 Гол Гараас гарна уу
SIGILL 4 Гол Хууль бус зааварчилгаа
SIGABRT 6 Гол Эс бөглөх дохио (3)
SIGFPE 8 Гол Хөвөх цэгийн онцгой тохиолдол
SIGKILL 9 Хугацаа Дохио алах
SIGSEGV 11 Гол Санах ойн лавлагаанд буруу байна
SIGPIPE 13 Хугацаа Эвдрэлтэй хоолой: Уншигчидтай хоолойгоор бичих
SIGALRM 14 Хугацаа Сэрүүлгийн цагаар дохио өгөх (2)
SIGTERM 15 Хугацаа Дуусах дохио
SIGUSR1 30,10,16 Хугацаа Хэрэглэгчийн тодорхойлсон дохио 1
SIGUSR2 31,12,17 Хугацаа Хэрэглэгчийн тодорхойлсон дохио 2
SIGCHLD 20,17,18 Ign Хүүхэд зогссон буюу дуусгавар болсон
SIGCONT 19,18,25 Хэрвээ зогсвол үргэлжлүүл
SIGSTOP 17,19,23 Зогс Үйл явцыг зогсоох
SIGTSTP 18,20,24 Зогс Tty дээр дарж зогсоох
SIGTTIN 21,21,26 Зогс суурь процессод зориулсан tty оролт
SIGTTOU 22,22,27 Зогс суурь процессод зориулсан tty гаралт

SIGKILL болон SIGSTOP дохионуудыг барьж, блоклох эсвэл үл тоомсорлох боломжгүй.

Дараа нь POSIX.1 стандартаар биш боловч SUSv2 болон SUSv3 / POSIX 1003.1-2001-д тайлбарласан дохиогоор оруул.

Дохиолол Утга Үйлдэл Сэтгэгдэл бичих
SIGPOLL Хугацаа Хортой үйл явдал (Sys V). SIGIO гэсэн нэр томъёо
SIGPROF 27,27,29 Хугацаа Профайл таймер дууссан
SIGSYS 12, -, 12 Гол Өдөр тутмын муу маргаан (SVID)
SIGTRAP 5 Гол Уламжлалт / завсарлагааны цоорхой
SIGURG 16,23,21 Ign Сокет дээр яаралтай нөхцөл (4.2 BSD)
SIGVTALRM 26,26,28 Хугацаа Виртуал сэрүүлэгтэй цаг (4.2 BSD)
SIGXCPU 24,24,30 Гол CPU-ийн цагийн хязгаар хэтэрсэн (4.2 BSD)
SIGXFSZ 25,25,31 Гол Файлын хэмжээ хязгаар хэтэрсэн (4.2 BSD)

Линукс 2.2 хүртэл, SIGSYS , SIGXCPU , SIGXFSZ болон SPARC ба MIPS-ээс бусад архитектурын протоколууд ( SIGBUS- ийн үндсэн үйл явцыг зогсоох ёстой байсан). (Зарим бусад Unices дээр SIGXCPU болон SIGXFSZ- ийн үндсэн үйлдэл нь үндсэн хаяггүйгээр процессыг зогсоох явдал юм.) Линукс 2.4 нь эдгээр дохионуудын POSIX 1003.1-2001 шаардлагуудтай нийцэж байгаа бөгөөд процессыг үндсэн хаягдлаар дуусгавар болгодог.

Дараагийн янз бүрийн бусад дохионууд.

Дохиолол Утга Үйлдэл Сэтгэгдэл бичих
SIGEMT 7, -, 7 Хугацаа
SIGSTKFLT -, 16, - Хугацаа Coprocessor дээр ашиглагдаагүй овоолсон гэмтэл (ашиглагдаагүй)
SIGIO 23,29,22 Хугацаа I / O одоо боломжтой (4.2 BSD)
SIGCLD -, -, 18 Ign SIGCHLD-д ижил утгатай
SIGPWR 29,30,19 Хугацаа Цахилгаан тасарсан (Системийн V)
SIGINFO 29, -, - SIGPWR-тэй ижил утгатай
SIGLOST -, -, - Хугацаа Файл түгжигдсэн байна
SIGWINCH 28,28,20 Ign Цонхны хэмжээг өөрчлөх (4.3 BSD, Sun)
SIGUNUSED -, 31, - Хугацаа Ашиглагдаагүй дохио (SIGSYS байх болно)

(Signal 29 бол SIGINFO / SIGPWR альфа дээр SIGLOST гэх мэт).

SIGEMT нь POSIX 1003.1-2001-д зааж өгөөгүй боловч ихэнх бусад Unices дээр энэ нь үндсэн процессыг үндсэн хаягдлаар дуусгавар болгодог бөгөөд нээгдээгүй байна.

SIGPWR (POSIX 1003.1-2001-д зааж өгөөгүй байдаг) энэ нь ихэвчлэн гарч ирсэн бусад Юниксууд дээр үндсэндээ үл тоомсорлодог.

SIGIO (POSIX 1003.1-2001-д зааж өгөөгүй байдаг) нь хэд хэдэн бусад Unices дээр анхдагчаар хэрэглэгддэггүй.

Бодит цагийн дохио

Линукс нь анхдагч POSIX.4 бодит цагийн өргөтгөлүүдийг (одоо POSIX 1003.1-2001-д оруулсан) бодит цагийн дохиог дэмждэг. Линукс нь 32 ( SIGRTMIN ) дугаартай 32 ( SIGRTMAX ) дугаарлагдсан 32 бодит цагийн дохиог дэмждэг. (Хөтөлбөрүүд нь SIGRTMIN + n тэмдэглэгээг ашиглан бодит цагийн дохиог байнга лавлаж байх ёстой. Учир нь бодит цагийн дохионы тоо нь Unices -ийн дагуу өөр өөр байдаг.)

Стандарт дохионоос ялгаатай нь бодит цагийн дохио нь урьдчилан тодорхойлогдоогүй утгатай: бодит цагийн дохионы бүхэл бүтэн багцыг хэрэглээнд тодорхойлсон зорилгод ашиглаж болно. (Гэхдээ LinuxThreads хэрэгжилт нь эхний гурван бодит дохиог ашигладаг болохыг анхаарна уу.)

Байнгын бус бодит дохиог анхдагч үйлдэл нь хүлээн авах ажиллагааг зогсоох явдал юм.

Бодит цагийн дохиог дараах байдлаар ялгаатай байна.

  1. Бодит цагийн дохионы олон тохиолдлыг дарааллуулж болно. Эсрэгээр, хэрэв дохиог одоогоор түгжигдэх үед стандарт дохионы олон жишээг хүргэж байгаа бол зөвхөн нэг тохиолдол дараалалд орно.
  2. Хэрэв дохио нь sigqueue (2) ашиглан илгээгдсэн бол дагалдах дагалдах утга (бүхэл тоо эсвэл заагч) дохио өгч болно. Хүлээн авах процесс нь SA_SIGACTION тугийг мангас (2) болгон ашиглана. Энэ тохиолдолд өгөгдлийг siginfo_t-ийн si_value талбараар дамжуулан өгөгдлийг олж авч болно. Үүнээс гадна, энэхүү бүтцийн si_pid болон si_uid талбарууд нь PID болон дохио илгээж байгаа процессорын жинхэнэ хэрэглэгчийн ID-г олж авахад хэрэглэгдэж болно.
  3. Бодит цаг хугацааны дохиог баталгаатай захиалгаар хүргэдэг. Ижил төрлийн олон удаагийн бодит дохиог илгээсэн дарааллаар нь хүргэдэг. Хэрэв бодит цагийн дохионууд процесс руу илгээгдвэл хамгийн бага дугаартай дохиог эхэлнэ. (Ийнхүү, бага тооны дохио нь хамгийн чухал байдаг.)

Хэрэв стандарт болон бодит цагийн хоёулаа процесст хүлээгдэж байгаа бол POSIX эхлээд хүргэгдээгүй тодорхойлогдоно. Линукс нь бусад олон шийдлүүдийн нэгэн адил энэ тохиолдолд стандарт дохионоос давуу эрх олгодог.

POSIX-ийн дагуу шийдэл нь процесст дараалал өгөх дараагийн _POSIX_SIGQUEUE_MAX (32) -ийн хамгийн бага дохио зөвшөөрөх ёстой. Гэсэн хэдий ч, процесс бүрт тавигдах хязгаарлалт тавихын оронд Линукс бүх процессийн хувьд дараалсан бодит цагийн дохионуудын тоог системийн хэмжээнд хамруулах боломжийг олгодог.

Энэ хязгаарыг / proc / sys / kernel / rtsig-max файлаар өөрчилж үзэж болно. Холбогдох файл, / proc / sys / kernel / rtsig-max нь одоогоор хэд хэдэн бодит цагийн дохионуудыг хүлээлгэн өгдөг.

ТАЙЛБАР

POSIX.1

Чухал: Тушаалын командыг ашиглана ( % man ) ашиглана.