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

Исходное сообщение
"демон - время делу ))"

Отправлено Alexey , 24-Июн-03 16:08 
Народ, подскажите путь, при помощи чего или как сделать чтобы мой демон через каждые 5 минут делал дело? например при помощи перехвата прерывания или еще какието способы есть?

Содержание

Сообщения в этом обсуждении
"демон - время делу ))"
Отправлено Parish , 24-Июн-03 16:16 
for(;;){
sleep(5);
delo();
}

"демон - время делу ))"
Отправлено Alexey , 24-Июн-03 16:24 
гм )) это точно )) пора в отпуск )))... ну а еще есть варианты или это самый рациональный?

"демон - время делу ))"
Отправлено Olej , 24-Июн-03 17:29 
>гм )) это точно )) пора в отпуск )))... ну а еще
>есть варианты или это самый рациональный?

1. Их ... миллион ... всё от потребностей зависит.
2. Но самые простые, без изысков, способы - будут все: использовать службу времени, как показано выше или напр.так:

while( true ) alarm( 5 );
- а обработчик SIGALARM ... делает дело.

Или ещё проще, делают: единичеый alarm( 5 ), а последующие взводятся прямо в обработчике...



"демон - время делу ))"
Отправлено Alexey , 24-Июн-03 17:51 
ок, спасибо.

"демон - время делу ))"
Отправлено XMan , 24-Июн-03 18:37 
Только стоит уточнить - не sleep(5) или alarm(5), а sleep(300) или alarm(300). Нужно же каждые "5 минут" :)

"демон - время делу ))"
Отправлено SalieFF , 10-Июл-03 16:09 
>>гм )) это точно )) пора в отпуск )))... ну а еще
>>есть варианты или это самый рациональный?
>
>1. Их ... миллион ... всё от потребностей зависит.
>2. Но самые простые, без изысков, способы - будут все: использовать службу
>времени, как показано выше или напр.так:
>
>while( true ) alarm( 5 );
>- а обработчик SIGALARM ... делает дело.
>
>Или ещё проще, делают: единичеый alarm( 5 ), а последующие взводятся прямо
>в обработчике...
Вообще в линуховых доках по сигнальным обработчикам не рекоммендуецца в эти самые обработчики ничего, кроме атомарных операций совать (типа приравнивания или инкремента переменной, к примеру). А уж если параллельно юзаюцца треды, то не тока не рекоммендуецца, а прямо-таки запрещаецца ;)


"демон - время делу ))"
Отправлено USE , 20-Июл-03 15:25 
Нельзя использовать setitimer совместно с sleep, приведет к неправильной работе. Почему ?! Читайте документацию.
Лучше не использовать такого демона, который висит ничего не делая целых пять минут, и только пару минут работает, для этого используйте at или cron, так будет правильнее.
А ежели вы используете timer и делаете ДЕЛО в обработчике сигнала, то таймер на время обработки нужно деактивировать, чтобы избежать получения от него сигнала во время ДЕЛА. А так же задуматься, что демон будет делать, пока он сигнал не получил, ведь sleep с таймером работать не будет. (вернее будет, но таймер работать будет очень неправильно)
Советую:

man at; man cron; man crontab; man sleep; man setitimer;