-SIGCONT не продолжает приостановленный процесс? - PullRequest
5 голосов
/ 12 января 2012

Следующий процесс не продолжается после запуска kill -SIGCONT pid с другого терминала.

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("paused\n");
    pause();
    printf("continue\n");

    return 0;
}

Я ожидаю, что программа продолжит работу после отправки сигнала и печати «продолжить».Почему это не работает, как ожидалось?

1 Ответ

5 голосов
/ 12 января 2012

pause() задокументировано как

заставляет вызывающий процесс (или поток) в спящем режиме до тех пор, пока не будет доставлен сигнал, который либо завершит процесс, либо вызовет функцию перехвата сигнала.

Но SIGCONT только продолжает процесс, ранее остановленный SIGSTOP или SIGTSTP.

Итак, вы можете попробовать:

 kill(getpid(), SIGSTOP);

Вместо вашего pause()

Также вы можете посмотреть на sigsuspend().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...