LINUX.ORG.RU

Какие сигналы должно обрабатывать уважающее себя приложение?


0

0
man 7 signal читал. :)

А вопрос вот в чем: хочу, чтобы когда кто-нибудь пытается завершить мое приложение при помощи сигнала, оно не падало, а аккуратно завершало свою работу. Насколько я понимаю, если пользователь захочет корректно завершить приложение, то он пришлет мне SIGINT или SIGQUIT, но вот что делать когда он завершает работу системы? Как в данном случае система оповещает приложения о том, что необходимо завершиться?


> Как в данном случае система оповещает приложения о том, что необходимо завершиться?

SIGTERM, потом SIGKILL

d_a ★★★★★
()
Нафиг что-то обрабатывать. Просто зарегистрируй функции которые подчищают ресурсы через atexit().
Absurd ★★★
()
Ответ на: комментарий от Absurd

Нафиг что-то обрабатывать. Просто зарегистрируй функции которые подчищают ресурсы через atexit().

Из мана:

NOTES
       Functions registered using atexit() (and on_exit(3)) are not called if a process terminates abnormally because of the delivery of a signal.

Deleted
()
SIGHUP, SIGINT, SIGQUIT, SIGTERM. Остальные сигналы, если нужно. Не нужно пытаться обработать SIGKILL и SIGSTOP, это только замусоривает код.

>но вот что делать когда он завершает работу системы?

Там обыно приходит SIGTERM, но демоны обычно завершают работу одельной командой, которая запускается из скриптов завершения работы. Например, "gpm -k".

mky ★★★★★
()
Ответ на: комментарий от mky
> Там обыно приходит SIGTERM, но демоны обычно завершают работу одельной командой, которая запускается из скриптов завершения работы. Например, "gpm -k".

Скорее иногда, чем обычно. Обычно из скриптов как раз им отправляется тот же SIGTERM.

const86 ★★★★★
()
Ответ на: комментарий от mky
> Не нужно пытаться обработать SIGKILL и SIGSTOP

Тем более что они еще и не перехватываются :-)

no-dashi ★★★★★
()
SIGXCPU для любителей cgi и хостинга :)
true_admin ★★★★★
()
Спасибо всем за ответы.
riYu
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.