Попытка записать обработчик сигнала для сигнала SIGINT. Я хочу, чтобы новый SIGINT был отправлен в группу процессов, указанную в pid. (используя функцию kill из signal.h).
Страницы man для функции kill man 2 kill
указывают, что отрицательный pid отправит сигнал всей группе процессов.
Раньше у меня было это, которое только посылало сигнал на пид, и оно работало нормально. Сигнал отправлен и процесс правильно отреагировал.
void handle_sigint(int sig){
pid_t pid = getprocesspid();
if(kill(pid, sig) < 0){
//Not taken
}
}
Однако, когда я отменяю pid, функция kill возвращает -1 и выдает ошибку с ошибкой «Нет такого процесса».
void handle_sigint(int sig){
pid_t pid = getprocesspid();
if(kill(-pid, sig) < 0){
//Errors out
}
}
Это действительно странно для меня. Я могу проверить, что PID является правильным для процесса. Однако каждый раз после того, как я отменяю pid, программа вылетает