При работе с сигналами POSIX у вас есть два средства.Во-первых, простой (но не рекомендуемый) способ, signal () .Во-вторых, более элегантный, актуальный, но сложный способ, sigaction () .Пожалуйста, используйте sigaction (), если вы не обнаружите, что он недоступен на какой-то платформе, с которой вам нужно работать.
В этой главе руководства по glibc объясняются различия между ними и дается хорошаяПример кода о том, как использовать оба.В нем также перечислены сигналы, которые могут быть обработаны, даны рекомендации о том, как они должны обрабатываться , и более подробно рассказывается, как определить, каким образом данный сигнал обрабатывается (или не обрабатывается) в настоящее время .,Это намного больше кода, чем я хотел бы вставить в ответ здесь, отсюда и ссылки.
Это действительно стоит часа или двух, которые потребуются вам, чтобы прочитать ссылки и проработать примеры.Обработка сигналов (особенно в программах, которые демонизируют) чрезвычайно важна.Хорошая программа должна обрабатывать все фатальные сигналы, которые могут быть обработаны (например, SIGHUP), и явно игнорировать сигналы, которые она может не использовать (например, SIGUSR1 / SIGUSR2).
Также не помешает изучить разницу междунормальные сигналы и сигналы реального времени, по крайней мере, до понимания того, как ядро объединяет предыдущее, а не второе.
Как только вы поработаете с ним, вы, вероятно, почувствуете склонность написать простой для изменения набор функций для обработки ваших сигналов и повторно использовать этот код снова и снова.
Извинитеза то, что вы не дали быстрый и грязный фрагмент кода, чтобы показать вам, как решить вашу насущную потребность, но это не быстрая и грязная тема:)