Есть ли какой-нибудь способ предотвратить извлечение процессора из процесса, пока он находится в обработчике? - PullRequest
0 голосов
/ 29 марта 2020

Я создал обработчик 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
    }
...