Как я могу справиться с SIGSTOP с SIGCONT? - PullRequest
0 голосов
/ 12 апреля 2020

я пытаюсь сделать так, чтобы, когда моя программа получила SIGSTOP, она отправляла SIGCONT себе. если я делаю это на терминале, это работает, но я хочу сделать это в моей программе. Я пробовал что-то подобное, но это не работает ..

Вы можете мне помочь?

int main()
{
    pid_t pid;
    pid = fork();

    if(pid > 0)
    {
       int i = 0;

        while(1)
        {
            if(i == 5)
            {
                kill(getpid(), SIGSTOP);
            }
            printf("i = %d\n" ,i);
            i++;
            sleep(1);
        } 
    }

    if(pid == 0)
    {
        while(1)
        {
            kill(getpid(), SIGCONT);
        }
    }
    return 0 ;
}

1 Ответ

2 голосов
/ 12 апреля 2020

Вы путаете, какой PID какой. Ребенок посылает себе SIGCONT, который ничего не делает, так как он уже запущен. Сделайте так, чтобы вместо него отправлялся родительский SIGCONT.

...