Signal - Linux / Unix Command

Mae Linux yn cefnogi signalau dibynadwy POSIX (yn y blaen, "signalau safonol") a signalau POSIX amser real.

Arwyddion Safonol

Mae Linux yn cefnogi'r signalau safonol a restrir isod. Mae nifer o rifau signal yn ddibynnol ar bensaernïaeth, fel y nodir yn y golofn "Gwerth". (Pan roddir tri gwerthoedd, mae'r un cyntaf fel arfer yn ddilys ar gyfer alpha a sparc, yr un canol ar gyfer i386, ppc a sh, a'r un olaf ar gyfer mips.

A - yn dynodi bod signal yn absennol ar y pensaernïaeth gyfatebol.)

Mae'r cofnodion yn y golofn "Gweithredu" y tabl yn nodi'r camau rhagosodedig ar gyfer y signal, fel a ganlyn:

Tymor

Camau rhagosodedig yw terfynu'r broses.

Ign

Camau rhagosodedig yw anwybyddu'r signal.

Craidd

Camau rhagosodedig yw terfynu'r broses a chwympo craidd.

Stopio

Camau rhagosodedig yw atal y broses.

Yn gyntaf, y signalau a ddisgrifir yn y safon POSIX.1 gwreiddiol.

Signal Gwerth Gweithredu Sylw
neu farwolaeth y broses reoli
SIGINT 2 Tymor Ymyrryd o'r bysellfwrdd
SIGQUIT 3 Craidd Gadewch o bysellfwrdd
SIGILL 4 Craidd Cyfarwyddyd Anghyfreithlon
SIGABRT 6 Craidd Erthylu'r signal rhag erthylu (3)
SIGFPE 8 Craidd Eithriad pwynt symudol
SIGKILL 9 Tymor Llofnodwch signal
SIGSEGV 11 Craidd Cyfeirnod cof annilys
SIGPIPE 13 Tymor Peipen wedi'i dorri: ysgrifennu at bibell heb ddarllenwyr
SIGALRM 14 Tymor Signer amserydd o larwm (2)
SIGTERM 15 Tymor Pwynt terfynu
SIGUSR1 30,10,16 Tymor Sylweddol wedi'i ddiffinio gan ddefnyddiwr 1
SIGUSR2 31,12,17 Tymor Sylwedd 2 wedi'i ddiffinio gan ddefnyddiwr
SIGCHLD 20,17,18 Ign Plentyn wedi'i stopio neu ei derfynu
SIGCONT 19,18,25 Parhewch os yw wedi'i stopio
SIGSTOP 17,19,23 Stopio Stopio'r broses
SIGTSTP 18,20,24 Stopio Stopio teipio ar y tyt
SIGTTIN 21,21,26 Stopio Mewnbwn tty ar gyfer y broses gefndirol
SIGTTOU 22,22,27 Stopio allbwn tty ar gyfer y broses gefndir

Ni all y signalau SIGKILL a SIGSTOP gael eu dal, eu blocio, neu eu hanwybyddu.

Nesaf, nid yw'r signalau yn y safon POSIX.1 ond a ddisgrifir yn SUSv2 a SUSv3 / POSIX 1003.1-2001.

Signal Gwerth Gweithredu Sylw
SIGPOLL Tymor Digwyddiad plag (Sys V). Cyfystyr o SIGIO
SIGPROF 27,27,29 Tymor Daeth amserlen proffilio i ben
SIGSYS 12, -, 12 Craidd Dadl wael i arferol (SVID)
SIGTRAP 5 Craidd Trap olrhain / torri pwynt
SIGURG 16,23,21 Ign Amod brys ar soced (4.2 BSD)
SIGVTALRM 26,26,28 Tymor Cloc larwm rhithwir (4.2 BSD)
SIGXCPU 24,24,30 Craidd Roedd y terfyn amser CPU yn uwch na (4.2 BSD)
SIGXFSZ 25,25,31 Craidd Rhagori ar y terfyn maint ffeil (4.2 BSD)

Hyd at ac yn cynnwys Linux 2.2, yr ymddygiad rhagosodedig ar gyfer SIGSYS , SIGXCPU , SIGXFSZ , ac (ar bensaernļau heblaw SPARC a MIPS) SIGBUS oedd i derfynu'r broses (heb wahardd craidd). (Ar rai Unedau eraill, y camau rhagosodedig ar gyfer SIGXCPU a SIGXFSZ yw terfynu'r broses heb dump craidd.) Mae Linux 2.4 yn cydymffurfio â gofynion POSIX 1003.1-2001 ar gyfer y signalau hyn, gan derfynu'r broses gyda chwythiad craidd.

Nesaf arwyddion eraill nesaf.

Signal Gwerth Gweithredu Sylw
SIGEMT 7, -, 7 Tymor
SIGSTKFLT -, 16, - Tymor Ffa stack ar goprosesydd (heb ei ddefnyddio)
SIGIO 23,29,22 Tymor Rwyf i / O yn awr yn bosibl (4.2 BSD)
SIGCLD -, -, 18 Ign Cyfystyr i SIGCHLD
SIGPWR 29,30,19 Tymor Methiant pŵer (System V)
SIGINFO 29, -, - Cyfystyr i SIGPWR
SIGLOST -, -, - Tymor Ffeil cloi wedi'i golli
SIGWINCH 28,28,20 Ign Newid maint y ffenestr (4.3 BSD, Haul)
GWYBODAETH -, 31, - Tymor Sylweddol heb ei ddefnyddio (bydd SIGSYS)

(Mae Signal 29 yn SIGINFO / SIGPWR ar alffa ond SIGLOST ar sparc.)

Nid yw SIGEMT wedi'i bennu yn POSIX 1003.1-2001, ond nid yw'n ymddangos ar y rhan fwyaf o Undebau eraill, lle mae ei weithred ddiffygiol fel rheol yn dod i ben â'r broses gyda dympiad craidd.

Fel arfer, caiff SIGPWR (nad yw wedi'i bennu yn POSIX 1003.1-2001) ei anwybyddu yn ddiofyn ar yr Unedau eraill hynny lle mae'n ymddangos.

Anwybyddir SIGIO (nad yw'n cael ei bennu yn POSIX 1003.1-2001) yn ddiofyn ar nifer o Unedau eraill.

Arwyddion amser real

Mae Linux yn cefnogi signalau amser real fel y'u diffinnwyd yn wreiddiol yn yr estyniadau POSIX.4 amser real (ac sydd bellach wedi'u cynnwys yn POSIX 1003.1-2001). Mae Linux yn cefnogi 32 o signalau amser real, wedi'u rhifo o 32 ( SIGRTMIN ) i 63 ( SIGRTMAX ). (Dylai rhaglenni bob amser gyfeirio at arwyddion amser real gan ddefnyddio nodiadau SIGRTMIN + n, gan fod yr ystod o rifau signal amser real yn amrywio ar draws Unices.)

Yn wahanol i signalau safonol, nid oes gan arwyddion amser real unrhyw ystyron rhagnodedig: gellir defnyddio'r set gyfan o signalau amser real ar gyfer dibenion a ddiffinnir gan y cais. (Sylwch, fodd bynnag, bod y gweithrediad LinuxThreads yn defnyddio'r tri signal cyntaf amser real.)

Y camau rhagosodedig ar gyfer signal heb ei drin yn amser real yw terfynu'r broses dderbyn.

Mae arwyddion amser real yn cael eu gwahaniaethu gan y canlynol:

  1. Gellir ciwio enghreifftiau lluosog o arwyddion amser real. Mewn cyferbyniad, os cyflwynir lluosog o arwydd safonol tra bod y signal hwnnw wedi'i blocio ar hyn o bryd, yna dim ond un achos sy'n ciwio.
  2. Os caiff y signal ei anfon gan ddefnyddio sigqueue (2), gellir anfon gwerth cysylltiedig (naill ai cyfanrif neu bwyntydd) gyda'r signal. Os yw'r broses dderbyn yn sefydlu trinydd ar gyfer y signal hwn gan ddefnyddio baner SA_SIGACTION i doriad (2) yna gall gael y data hwn trwy faes si_value y strwythur siginfo_t a basiwyd fel yr ail ddadl i'r trosglwyddwr. At hynny, gellir defnyddio caeau si_pid a si_uid o'r strwythur hwn i gael y PID ac adnabod defnyddiwr go iawn o'r broses sy'n anfon y signal.
  3. Cyflwynir signalau amser real mewn archeb gwarantedig. Mae arwyddion lluosog amser real o'r un math yn cael eu cyflwyno yn y drefn y cawsant eu hanfon. Os bydd arwyddion amser real gwahanol yn cael eu hanfon at broses, fe'u cyflwynir gan ddechrau gyda'r signal rhif isaf. (Ie, mae gan arwyddion rhif isel y flaenoriaeth uchaf.)

Os yw'r arwyddion safonol a amser real ar y gweill am broses, mae POSIX yn ei ddileu heb ei amlinellu sy'n cael ei gyflwyno yn gyntaf. Mae Linux, fel llawer o weithrediadau eraill, yn rhoi blaenoriaeth i arwyddion safonol yn yr achos hwn.

Yn ôl POSIX, dylai gweithredu alluogi o leiaf _POSIX_SIGQUEUE_MAX (32) o arwyddion amser real i gael eu ciwio i broses. Fodd bynnag, yn hytrach na gosod terfyn y broses, mae Linux yn gosod terfyn system-gyfan ar nifer y signalau ciw mewn amser real ar gyfer pob proses.

Gellir gweld y terfyn hwn (a gyda braint) wedi'i newid trwy'r ffeil / proc / sys / kernel / rtsig-max . Gellir defnyddio ffeil gysylltiedig, / proc / sys / kernel / rtsig-max , i ganfod faint o signalau amser real sy'n cael eu ciwio ar hyn o bryd.

CYFLAWNI I

POSIX.1

Pwysig: Defnyddiwch y gorchymyn dyn ( % man ) i weld sut mae gorchymyn yn cael ei ddefnyddio ar eich cyfrifiadur penodol.