URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6948
[ Назад ]

Исходное сообщение
"как заставить sleep спать"

Отправлено fa , 15-Ноя-07 21:40 
Всем привет.
В си я новичек. Не пинайте если глупый вопрос.
Вызываю в потоке sleep(10) (linux, pthreads). Вместо того, чтобы спать 10 сек. он возвращает 10. В мане написано, что это из-за того что поступил сигнал. Собственно, вопрос, как заставить sleep этот сигнал проигнорировать и продолжать исполнять свой долг, то есть спать.
Заранее спасибо

Содержание

Сообщения в этом обсуждении
"как заставить sleep спать"
Отправлено stolik , 16-Ноя-07 01:24 
если причиной всему и впрямь являются сигнал(ы) то можно блокировать участок кода от сигнала. В нити это делает функция pthread_sigmask() Если программа однопотоковая, т.е. без нитей, то такую же функцию выполняет sigprocmask(). В man все подробненько есть.

"как заставить sleep спать"
Отправлено NuclearCat , 16-Ноя-07 10:51 
>если причиной всему и впрямь являются сигнал(ы) то можно блокировать участок кода
>от сигнала. В нити это делает функция pthread_sigmask() Если программа однопотоковая,
>т.е. без нитей, то такую же функцию выполняет sigprocmask(). В man
>все подробненько есть.

Или использовать usleep


"как заставить sleep спать"
Отправлено fa , 16-Ноя-07 14:00 
Болтшое спасибо за ответы. pthread_sigmask помог. usleep так же реагирует на сигналы как и sleep



"как заставить sleep спать"
Отправлено Michelnok , 16-Ноя-07 17:47 
>Собственно, вопрос, как заставить sleep этот сигнал проигнорировать

А что за сигнал-то хоть? Игнорировать их можно только когда точно знаешь что делаешь...