SIGINT также получен от дочерних процессов

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

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

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

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

Любое предложение?


person Francesco Belladonna    schedule 08.11.2011    source источник
comment
Я думаю, что правильным способом было бы отключить процесс D от консоли, который называется демоном.   -  person sashoalm    schedule 08.11.2011
comment
Я думал о чем-то подобном, но я не знал, что это возможно   -  person Francesco Belladonna    schedule 08.11.2011


Ответы (1)


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

person chill    schedule 08.11.2011