2010-04-06 2 views
0

sys/acct.h (V1이 아닌 V3)에 기반하여 필자는 acct 파일을 한 줄씩 파싱하는 파서를 기반으로 사용자 사용 통계를 수집해야합니다. 파서는 N 초마다 전체 파일을 실행하고 구문 분석하며 마지막 실행 이후 누적 된 사용자 통계 (N 초 전)를 수집해야합니다. sys/acct.h에서 제공하는 정보를 기반으로 가장 적합한 방법이 무엇인지 확신 할 수 없습니다.이번에는 관련 프로세스 통계 통계가 적절하게 수집됩니까?

이 같은

아마 뭔가 : 또한

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

"부동 소수점 값 3 비트,베이스 (8) 지수로 구성하고, 13 비트 가수",하지만 난 생각이라고합니다 comp_t u_int16_t는 부호없는 짧은 int입니다. 제공된 공식으로 길게 변환해야합니까?

답변

0

지수를 가려서 가수를 이동해야합니다. 파일은 당신이 쇼에 연결하는 방법 :

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

당신은 컴파일러가 원하는 크기를 사용하도록 큰 형이 뭔가를 던져하지만, 잘못된 부분에 그것을하지 않도록주의 수 또는 ' 잘못된 결과가 나옵니다. 어쨌든 반드시 필요한 것은 아니지만 시도해도 좋을 것입니다.

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