Russian Qt Forum

Программирование => С/C++ => Тема начата: Anonymous от Март 27, 2004, 19:09



Название: как сделать задержку в проге
Отправлено: Anonymous от Март 27, 2004, 19:09
Пишу прогу на gсс & ncurses. Надо чтоб после выплнения определенных ф-ций программа оставливалась на определенное время, а потом возобнавляла работу. Есть в gcc такая ф-ция?


Название: Re: как сделать задержку в проге
Отправлено: ods от Март 29, 2004, 13:49
Цитата: "Anonymous"
Пишу прогу на gсс & ncurses. Надо чтоб после выплнения определенных ф-ций программа оставливалась на определенное время, а потом возобнавляла работу. Есть в gcc такая ф-ция?

man 3 sleep


Название: как сделать задержку в проге
Отправлено: EugeneVC от Март 29, 2004, 13:54
или unsleep


Название: как сделать задержку в проге
Отправлено: npak от Март 29, 2004, 14:03
В gcc такой функции нет.  Функции реализуются в библиотеках.  Раз ты пользуешься ncurses, то ось, я полагаю, Unix/Linux, соответственно искать надо в библиотеках, которые идут с твоей системой.  На линуксе, как правило, ставится библиотека glibc.

В библиотеке glibc есть несколько функций для приостановки исполнения

sleep(3) -- останов на целое число секунд, POSIX.1
usleep(3) -- останов задаётся с точностью до микросекунд, нестандартная фича из  BSD и Single Unix Spec.
nanosleep(2) -- останов задаётся с точностью до наносекунд, POSIX.1b

Первый вариант самый простой, но есть заморочки при обработке сигналов и использовании pthreads

Я предпочитаю пользоваться nanosleep.


Название: как сделать задержку в проге
Отправлено: ods от Март 29, 2004, 14:11
Цитата: "EugeneVC"
или unsleep

Если точность нужна в миллисекундах, то usleep, но этой функции нет в POSIX и она не везде доступна. Для кросплатформной эмуляции usleep обычно используют select, хотя вариантов куча.


Название: как сделать задержку в проге
Отправлено: Rainbow от Март 29, 2004, 23:11
Если на то пошло то не RTOS системах об nanosleep можеш забь?ть.