задача стоит узнать 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 практический ? не будет так что кол-во тиков уйдет у меня вперед случайно?