The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
что возвращает системный вызов times, переносимо узнать uptime, !*! Kane, 06-Апр-10, 10:38  [смотреть все]
задача стоит узнать uptime системы или сделать какую то хоть засечку времени для временного контроля. это должно работать не только в linux, но и хотя бы в solaris.
точность высокая не нужна, 1 сек вполне достаточно поэтому использовать posix таймеры нет необходимости.

вот способ который будет работать только в linux ,  вызов sysinfo присутствует только в linux. Это непереносимо.

#include <sys/sysinfo.h>

int main (void)
{
    struct sysinfo info;

    int recf = sysinfo(&info);

    printf("recf=%d   \n\r" , recf);
    printf("Uptime = %d\n",info.uptime);

    return 0;
}


Второй способ будет работать почти везде, в Solaris точно

#include<sys/times.h>
#include<limits.h>
#include<unistd.h>
#include<time.h>


main()
{
clock_t ticks;
struct tms tmp;
long ticks_per_sec;
ticks=times(&tmp);

ticks_per_sec=sysconf(_SC_CLK_TCK);

printf("System up for %d seconds. ticks:%d tickspersec:%d \n"
, ticks/ticks_per_sec , ticks, ticks_per_sec);
}

Этот способ подходит всем, но я получаю непонятные значения.

на моей системе я получаю значения
17207405 sec   1720740538 ticks    100 ticks per second

Это 199 дней и не совсем понятно с какой точки отсчет.

в документации написано, что times возвращает количество tick с произвольной точки в прошлом.

times() returns the number of clock ticks that have elapsed since an arbitrary point in the past. The return value may overflow the possible range of type clock_t. On error, (clock_t) -1 is returned, and errno is set appropriately.  

у кого нить есть опыт использования times практический ? не будет так что кол-во тиков уйдет у меня вперед случайно?





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру