CTRL + C не убивает мою программу - PullRequest
0 голосов
/ 07 августа 2011

У меня есть программа, которая fork с ребенком. Я пытаюсь поймать следующие сигналы: SIGINT, SIGPIPE и SIGTERM.

Вкл. Ctrl + c (который генерирует SIGINT - afaik) Я хочу убедиться, что я уничтожаю дочерний процесс до того, как основная программа завершает работу, которую я выполняю в своем обработчике сигналов.

Теперь мое ожидание / понимание заключается в том, что родительский процесс будет автоматически завершен при Ctrl + c . Но этого не происходит.

Вкл. Ctrl + c Я получаю приглашение оболочки, но все еще вижу свой процесс в ps. Так что в основном моя основная программа не убить.

Мое понимание неверно?

Редактировать 0 : Одно наблюдение: до Ctrl + c , в ps состояние основной программы говорит S, но после Ctrl + c его I.

1 Ответ

0 голосов
/ 07 августа 2011

Он уничтожается после того, как код обработчика сигнала завершает работу, в вашем случае он фактически не умрет, пока не будет выполнен код, который вы поместили в код обработчика для SIGINT (который должен закрыть дочерний процесс, если вы написали его правильно).

Похоже, что ваш код обработчика делает что-то неправильно, что не позволяет процессу завершиться, пожалуйста, опубликуйте свой код обработчика и как вы настраиваете свой обработчик, как можно выполнить SIGIGN (игнорировать) на SIGINT, чтобыCTRL + C фактически ничего не делает с вашей программой.

Убедитесь, что вы вызываете exit (0) или exit (1), либо с кодом ошибки, чтобы сообщить процессу о прекращении, если не процесс не завершится.

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