LINUX.ORG.RU

nanosleep() завершается раньше времени.

 , , ,


0

1

Функция nanosleep() возвращает управление раньше заданного времени, если процесс получает сигналы SIGUSR1, SIGUSR2. Есть ли способ заставить функцию nanosleep() не завершаться раньше времени при получении процессом этих сигналов? Сигналы игнорировать совсем не могу, потому что я и запускаю эту функцию, чтобы сигналов дождаться.



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

у nanosleep 2 указателя на timespec, второй нужен, если nanosleep каким-то образом завершилась, раньше, чем функция «проспала» интервал, указанный в первом, в этом случае во втором будет остаток от первого, что мешает получить сигнал и «доспать» нужное время?

IvanR ★★★
()
Ответ на: комментарий от podovalov5

Почти правильно.

struct timespec requested_time;
...
while (nanosleep(&requested_time, &requested_time) == -1 && errno == EINTR)
    continue;
post-factum ★★★★★
()

Пора добавить тег podovalov.

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