SIGINT получил от детей тоже процессы - PullRequest
0 голосов
/ 08 ноября 2011

У меня 2 программы (написанные мной). Первый, называемый «MAN», вызовет «D» (второй), который представляет собой процесс, который будет работать в фоновом режиме до некоторого завершения.

Я хотел бы прекратить действие MAN без завершения D.

Я пытаюсь завершить MAN, используя ctrl + c, и он завершает работу правильно (я перехватил сигнал sigint), теперь я хочу, чтобы D продолжал работать, однако, когда MAN получает CTRL + C, D тоже получает его.

Как справиться с этой ситуацией? Важно, чтобы я хотел сохранить возможность запуска только D и завершения с помощью CTRL + C. Проблема возникает, когда я запускаю его через MAN, я не хочу завершать его с помощью CTRL + C, который должен достигать только MAN.

Есть предложения?

1 Ответ

5 голосов
/ 08 ноября 2011

Дочерний процесс (D) должен отсоединиться от управляющего терминала, вызвав setsid(2).

...