2010-04-06 84 views
0

基於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只是一個unsigned short int。我應該使用所提供的公式將其轉換爲長時間嗎?

回答

0

您需要掩蓋指數並轉換尾數。該文件鏈接到您展示瞭如何:

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

你可以在此投下東西較大的類型,以確保編譯器使用你想要的大小,但要小心,不要做錯誤的一部分,或者你」會得到錯誤的結果。無論如何,這不應該是必要的,但它不會損害嘗試:

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