LINUX.ORG.RU

Почему могут «неработать» sigwait(SIGCONT) и pause()?

 , , , ,


0

1

Я пытаюсь «придержать» ребенка пока родитель будет готов. Получив сигнал SIGCONT ребенок не просыпается по непонятной мне причине. Также я пробовал sigwait(SIGUSR1)/kill(SIGUSR1).

Эта проблема исчезает если запускать под strace.

На сейчас получилось придерживать ребенка при помощи raise(SIGSTOP).

Пример неработающего кода

int pid;

switch(pid = fork())
{
case 0:
    pause();
    execve();

default:
    sleep(1);
    kill(pid, SIGCONT);
    break;
}

do {} while (1);
★★★★★

Последнее исправление: cvv (всего исправлений: 7)

У тебя талант писать непонятно. Ты послал себе SIGSTOP и спрашиваешь, почему дальше ничего не работает, или что?

anonymous
()
Ответ на: комментарий от anonymous

Нет - с SIGSTOP все отлично работает но както некрасиво. А вот если я пытиюсь остановить ребенка при помощи sigwait() или pause() - работает только под дебаггером.

cvv ★★★★★
() автор топика
Последнее исправление: cvv (всего исправлений: 2)
Ответ на: комментарий от xpahos

Благодарю. Ты был внимательней.

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.