Я хочу принять сигнал SIGQUIT и выполнить некоторые действия - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу отправить SIGQUIT в мою программу через терминал.Прежде всего, что это за сигнал SIGQUIT? Ctrl + C или что-то еще?И во-вторых, как я могу поймать этот сигнал для печати некоторых сообщений (я говорю о Linux)

1 Ответ

0 голосов
/ 12 апреля 2019

SIGQUIT обычно используется для завершения процесса и создания дампа ядра.

Клавиша по умолчанию для отправки SIGQUIT - Control - \ . Вы также можете отправить сигнал с помощью

kill -QUIT <pid>

Если PID отрицателен, использует положительное значение в качестве идентификатора группы процессов и отправляет сигнал всем процессам в группе.

Control-C отправляет SIGINT.

Сгенерированные с клавиатуры сигналы отправляются всей группе процессов переднего плана. Поэтому, если ваша программа разветвляет детей, сигналы клавиатуры будут отправлены всем им.

Если вы хотите, чтобы ваша программа делала что-то другое с этим сигналом, используйте функцию signal(3) или sigaction(2), чтобы назначить ему функцию обработчика сигнала.

Если вы установите обработчик перед разветвлением, они наследуют его. Но если они вызывают exec для запуска новой программы, обработчики сигналов возвращаются к значениям по умолчанию в этом процессе (так как функция обработчика не будет существовать в новой программе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...