Timer под FreeBSD

Тема в разделе "WASM.BEGINNERS", создана пользователем Rocco, 11 май 2007.

  1. Rocco

    Rocco New Member

    Публикаций:
    0
    Регистрация:
    11 май 2007
    Сообщения:
    1
    Нужно написать программу, которая определяет текущие время и выводит его по центру экрана, обновляя его после заданной задержки.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Rocco
    Системные функции time и gettimeofday возвращают текущее время. (см. http://netadmintools.com/html/2gettimeofday.man.html)

    В текстовом режиме или в графическом? Сомневаюсь, что в графическом Вам удастся это реализовать.

    Задержку можно реализовать функциями sleep и nanosleep. Вообще, все эти функции можно вызывать напрямую через int 80h или через стандартную сишную либу. Вот пример задержки в 1 секунду для FreeBSD прямым системным вызовом:
    Код (Text):
    1. xor eax,eax
    2. push eax ; timespec.tv_nsec
    3. push 1   ; timespec.tv_sec
    4. mov ebx,esp
    5. mov ecx,esp
    6. mov al,162 ; nanosleep
    7. push ecx
    8. push ebx
    9. push eax
    10. int 80h
    11. add esp,20
    Или, вариант через сишную либу:
    Код (Text):
    1. push 0 ; timespec.tv_nsec
    2. push 1 ; timespec.tv_sec
    3. push esp
    4. call nanosleep
    5. add esp,12