장치에서 데이터를 로깅하고 시스템 시간 (밀리 초)으로 해당 데이터에 타임 스탬프를 지정하는 코드가 있습니다.fprintf 형식을 실수로 실행 취소합니다.
I는 다음과 같이 생성 된 타임 스탬프를 저장하는 uint64_t
을 사용했다 :
fprintf(ptr,"%ld\n",(long)stamp0);
:이 같은 (그것을 통해 생각없이) 파일에 타임 스탬프를 쓴 다음
struct timespec request;
clock_gettime(CLOCK_REALTIME, &request);
uint64_t stamp0 = (uint64_t)((uint64_t)request.tv_sec * 1000 + (uint64_t)request.tv_nsec/1000000);
이제 내 파일에
1130802699
처럼 보이지만,
1478599582064
처럼 보이는 잘못된 타임 스탬프가 있습니다.
오류를 해결하기 위해 할 수있는 일이 있습니까?
감사합니다. 타임 스탬프가 일치하지 않아서 내가 옳다고 생각합니다. 운 좋게 1 시간 정도 밖에 걸리지 않았으므로 롤오버가 문제가되지 않아야합니다. '344' 값에 어떻게 도착했는지 설명해 주시겠습니까? – James
고마워, 정말 도움이된다. 너는 나에게 많은 고통을 덜어 줬다. – James