2014-04-30 3 views
0

gettimeofday()은 하드웨어에 따라 RTC가 다릅니다.gettimeofday() API를 사용하지 마십시오.

일부는 응용 프로그램 프로그래밍에서 동일한 사용을 피할 수있는 방법을 제안 할 수 있습니까? 시스템 틱 사용 방법은 어떻게 접근 할 수 있습니까?

미리 감사드립니다.

+0

'time()'을 사용하면 어떨까요? 초만으로는 충분하지 않습니다.'clock_gettime()'(http://man7.org/linux/man-pages/man2/clock_gettime.2.html)을 사용하십시오. – alk

+0

이 api가 시스템 틱에서 값을 읽었습니까? 나는 그렇게 생각하지 않는다. .. 설정 시간에 제공되는 API가 있기 때문에. – user2598064

+0

http://www.ibm.com/developerworks/library/l-timers-list/ 다소 우리가 따라야 할 것이있다 – user2598064

답변

1

틱 단위로 시간을 얻으려면 times()을 사용하는 것이 좋습니다.

그러나 진드기가 부팅 시간에서 측정되었는지는 확실하지 않습니다.

From man times:

반환 값

시간은() 과거에 임의의 점 이후 경과 한 클럭 틱의 수를 반환합니다. [...]

는 [...]

NOTES 리눅스 회 리턴 값()을 측정하는로부터 "과거의 임의의 점"에서

은 변화했다 커널 버전 간. On Linux 2.4 및 이전 버전에서는이 시점에서 시스템이 부팅되었습니다. Linux 2.6 이후로,이 지점은 시스템 부팅 시간보다 (2^32/HZ) - 300 (즉, 약 429 백만) 초입니다. 커널 버전 (및 UNIX 구현 전반)의 가변성은 사실과 함께 반환 된 값이 clock_t의 범위를 초과 할 수 있다는 것을 의미하므로이 값을 사용하지 않는 것이 이식성이 좋은 응용 프로그램이라는 것이 을 의미합니다. 경과 시간의 변화를 측정하려면 대신 clock_gettime(2)을 사용하십시오.

clock_gettitme()CLOCK_BOOTTIME 타이머를 사용하여 이것을 읽는 것이 더 안전하고 이동하기 쉬운 방법 일 수 있습니다. RTC가없는 시스템에서이 함수 및/또는 타이머를 사용할 수 있는지 확실하지 않습니다. 다른 사람들은이 점을 명확히하는 것이 좋습니다.

관련 문제