SIGABRT
Апісанне: | Сігнал аварыйнага завяршэння, які ўжывае abort()
|
---|---|
Па змоўчванню: | завяршэнне з дампам памяці |
коды SA_SIGINFO | |
(не мае спецыфічных кодаў) |
У POSIX-сістэмах, SIGABRT — сігнал, які дасылаецца працэсам самому сабе пры выконванні функцыі abort()
, для аварыйнага супыну, у выпадку немагчымасці далейшага працягу праграмы.
SIGABRT — цэлалікавая канстанта, вызначаная ў загалоўкавым файле signal.h
. Сімвальныя імёны сігналаў ужываюцца замест нумароў, бо ў розных рэалізацыях нумары сігналаў могуць адрознівацца.
У GNU/Linux, таксама ёсць сігнал SIGIOT які з'яўляецца сінонімам SIGABRT.
Этымалогія[правіць | правіць зыходнік]
SIG — агульны прэфікс сігналаў, АBRT — скарочанае напісанне англ.: abort — заўчаснае спыненне, перапыненне (англійскі камп'ютарны жаргон). IOT абрэвіятура англ.: I/O transfer Trap — пастка увода-вывада (таксама IOT з'яўляецца мнемонікай інструкцыі PDP-8 абрэвіятура I/O Transfer)
Ужыванне[правіць | правіць зыходнік]
Сігнал SIGABRT працэс дасылае сам сабе, калі вызывае функцыю abort()
(функцыя libc, з прататыпам у stdlib.h). Сігнал SIGABRT можа быць перахоплены ці праігнараваны, але abort()
прымусова завершыць праграму (папярэдне скінуўшы і зачыніўшы стандартныя струмені і зрабіўшы дамп памяці праграмы) нават калі гэта не зробіць апрацоўшчык сігналу. Такім чынам функцыя abort()
гарантуе завяршэнне праграмы, чаму яна часта ўжываецца бібліятэкамі ў аварыйных сітуацыях — калі выкананне не павінна быць працягнута, але асноўная праграма павінна мець магчымасць выканаць дзеянні, патрэбныя перад аварыйным завяршэннем.
Таксама SIGABRT выклікаецца сцвярджэннямі (англ.: assertions; сродак адладкі Сі — макравызначэнне assert()
выклікае abort()
калі сцвярджэнне перададзенае ў якасці аргумента ілжыва).