- 论坛徽章:
- 0
|
我现在是这样取值的:
struct if_stat
{
char if_name[8];
// receive
unsigned long long if_rbytes;
unsigned long if_rpackets;
unsigned long if_rerrs;
unsigned long if_rdrop;
unsigned long if_rfifo;
unsigned long if_rframe;
unsigned long if_rcompressed;
unsigned long if_rmulticast;
// tramsmit
unsigned long long if_tbytes;
unsigned long if_tpackets;
unsigned long if_terrs;
unsigned long if_tdrop;
unsigned long if_tfifo;
unsigned long if_tcolls;
unsigned long if_tcarrier;
unsigned long if_tcompressed;
};
struct if_stat if_eth0_stat;
sscanf(line, "%6[^:]: %I64u %u %u %u %u %u %u %u %I64u %u %u %u %u %u %u %u",
&if_eth0_stat.if_name, &if_eth0_stat.if_rbytes, &if_eth0_stat.if_rpackets,
&if_eth0_stat.if_rerrs, &if_eth0_stat.if_rdrop, &if_eth0_stat.if_rfifo,
&if_eth0_stat.if_rframe, &if_eth0_stat.if_rcompressed, &if_eth0_stat.if_rmulticast,
&if_eth0_stat.if_tbytes, &if_eth0_stat.if_tpackets, &if_eth0_stat.if_terrs,
&if_eth0_stat.if_tdrop, &if_eth0_stat.if_tfifo, &if_eth0_stat.if_tcolls,
&if_eth0_stat.if_tcarrier, &if_eth0_stat.if_tcompressed)
可是当
printf("bytes:[%I64u] packets:[%u] %u %u %u %u %u %u %u %u %u %u %u %u %u %u\n",
if_eth0_stat.if_rbytes, if_eth0_stat.if_rpackets, if_eth0_stat.if_rerrs,
if_eth0_stat.if_rdrop, if_eth0_stat.if_rfifo, if_eth0_stat.if_rframe, if_eth0_stat.if_rcompressed,
if_eth0_stat.if_rmulticast, if_eth0_stat.if_tbytes, if_eth0_stat.if_tpackets, if_eth0_stat.if_terrs,
if_eth0_stat.if_tdrop, if_eth0_stat.if_tfifo, if_eth0_stat.if_tcolls, if_eth0_stat.if_tcarrier,
if_eth0_stat.if_tcompressed);进行打印的时候,发现if_eth0_stat.if_rbytes可以打出正确值,而if_eth0_stat.if_rpackets却始终为0,其正确的值后移变成了 if_eth0_stat.if_rerrs的取值了。不知到问题出在哪里? |
|