这个时间相关的流程会计统计数据收集是否合适?

时间:2010-04-06 17:09:39

标签: c linux process-accounting

基于sys/acct.h(V1,而非V3),我需要根据逐行解析acct文件的解析器收集一些用户使用情况统计信息。解析器将每N秒运行并解析整个文件,我需要收集自上次运行以来累积的用户统计信息(N秒返回)。根据sys / acct.h提供的信息,我不确定最合适的方法是什么。

也许是这样的:

if ((ac_btime + ac_etime) < (current_time - N)) { gather; }

另外comp_t被称为“由3位,8位指数和13位尾数组成的浮点值”,但我认为u_int16_t只是一个无符号短整数。我是否应该使用提供的公式将其转换为长期?

1 个答案:

答案 0 :(得分:0)

你需要屏蔽指数并移动尾数。您链接的文件显示了如何:

v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3);

您可以将此内容转换为更大的类型,以确保编译器使用您想要的大小,但要注意不要将其写入错误的部分,否则您将得到错误的结果。无论如何,这不应该是必要的,但尝试不会有害:

v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3L);