Я создал обработчик sigaction, так что, когда процесс получает SIGUSR1, он переходит к функции и умирает там (нет никакой возможности, что он не будет d ie внутри обработчика). Есть ли какой-либо способ, кроме использования семафоров или почтовых ящиков, для предотвращения отсоединения процессора от этого процесса, пока он находится в этой функции и до тех пор, пока не умрет? Я на linux (c)
Обработчик:
struct sigaction sa;
sa.sa_handler=death;
sigemptyset(&sa.sa_mask);
if(-1==sigaction(SIGUSR1, &sa, NULL))
{
perror("SIGACTION: SIGUSR1");
}
Функция смерти:
void death()
{
//Code
exit(0);
//In this point the cpu can now be taken from this process
}