Как отправить и перехватить сигнал, отправленный на PID, используя C - PullRequest
0 голосов
/ 05 мая 2011

Предположим, я знаю процесс идентификации моего родителя и хотел бы

kill(my_parent_id, SIGTERM)

Как родительский процесс, как я могу поймать этот сигнал?

1 Ответ

3 голосов
/ 05 мая 2011

Зарегистрируйтесь, чтобы поймать сигнал:

void termination_handler(int sig)
{
   /* do something */
}

struct sigaction handler;

handler.sa_handler = termination_handler;
sigemptyset (&handler.sa_mask);
handler.sa_flags = SA_RESTART;

sigaction(SIGTERM, &handler, NULL);

Вот хороший пример страницы .

Вы можете использовать старый стиль, но это не рекомендуется:

void termination_handler()
{
    /* do something */
}

signal(SIGTERM, termination_handler);
...