Linux系统下获取从启动到当前的ticks数(snmpget所需)

在SNMPget操作中,需要获取系统时间以ticks为单位。Linux下,通过`sysinfo`函数结合`struct sysinfo`结构体的`uptime`字段可以获取系统运行秒数,再结合当前微秒时间戳计算出ticks值。通常,_SC_CLK_TCK常量定义了每秒的ticks数,通常是100,表示10ms一个tick。此方法提供了一种计算高精度系统时间的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


      在snmpget中有节点需要访问时间,获取系统的时间一般都是以秒为单位,但是在snmp中是需要以tick为单位的,所以使用times获取当前系统运行tick


#include clock_t times(struct tms *buf);

clock_t就是返回的ticks的值,在一般的linux定义中,它是long的typedef。

 

unsigned long ticks = (unsigned long) times( NULL );

 

ticks的时间精度,如下方法:

 

 

unsigned long HZ = sysconf( _SC_CLK_TCK );

它返回每秒中的ticks个数。

其中_SC_CLK_TCK在文件 unistd.h中定义,通常,这个值是100,也就是说10ms一个tick,时钟精度就到10ms,如果需要更高精度的,大概就是jiffi?


linux中rfc1213系统时间更新节点ticks:

/* snmpget time ticks ,add rfc1213*/

pal_time_t nsm_get_sys_up_time_ticks()

{

   pal_time_t sysUpTime_u = 0;
      struct sysinfo info;

   struct pal_timeval tv;    
      unsigned long time;


   if(sysinfo(&info) < 0)
        return 0;

   time = (pal_time_t)info.uptime;/*系统更新时间单位S*/

   pal_time_tzcurrent(&tv, NULL);

   sysUpTime_u = (pal_time_t)tv.tv_usec; /*当前系统运行时间单位ms*/

   time = (pal_time_t)((time-1)*100 + (sysUpTime_u/10000));

   return time;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值