Не использовать CTRL-C , это отправляет сигнал всем процессам с одним и тем же управляющим терминалом (т. Е. В одном сеансе). Это то, что setpgid
не меняется, хотя я думаю, что для этой цели есть вызов setsid
(установить идентификатор сессии).
Самое простое решение - просто нацелиться на конкретный процесс, а не на сеанс. Из командной строки:
kill -INT pid
Из C:
kill (pid, SIGINT);
где pid - идентификатор процесса, на который вы хотите отправить сигнал.
Родитель может получить соответствующий PID из возвращаемого значения из fork()
. Если ребенок хочет иметь свой собственный PID, он может позвонить getpid()
.