clock_settime 예제

단조 시계 옵션이 지원되는 경우 모든 구현은 에 정의된 CLOCK_MONOTONIC의 clock_id를 지원합니다. 이 시계는 시스템의 단조 시계를 나타냅니다. 이 클럭의 경우 clock_gettime()에서 반환되는 값은 과거의 지정되지 않은 지점(예: 시스템 시작 시간 또는 Epoch) 이후의 시간(초 및 나노초)을 나타냅니다. 이 점은 시스템 시작 시간 후에 변경되지 않습니다. CLOCK_MONOTONIC 클럭의 값은 clock_settime()을 통해 설정할 수 없습니다. 이 함수는 CLOCK_MONOTONIC의 clock_id 인수로 호출되는 경우 실패합니다. SMP 시스템의 프로세서는 정확히 동시에 모두 시작되지 않으므로 타이머 레지스터는 일반적으로 오프셋에서 실행됩니다. 일부 아키텍처에는 부팅 시 이러한 오프셋을 제한하려는 코드가 포함됩니다. 그러나 코드는 오프셋을 정확하게 조정한다고 보장할 수 없습니다.

Glibc는 이러한 오프셋을 처리하는 규정이 없습니다 (리눅스 커널과 는 달리). 일반적으로 이러한 오프셋은 작기 때문에 대부분의 경우 효과는 무시할 수 있습니다. 단조 시계의 절대 값은 의미가 없으므로(원점은 임의적이기 때문에) 설정할 필요가 없습니다. 또한 실시간 응용 프로그램은 이 클럭의 값이 설정되지 않으므로 이 클럭으로 측정된 시간 간격은 clock_settime()에 대한 호출의 영향을 받지 않는다는 사실에 의존할 수 있습니다. . 이러한 함수를 사용할 수 있는 POSIX 시스템에서 기호 _POSIX_TIMERS는 0보다 큰 값으로 정의됩니다. 기호 _POSIX_MONOTONIC_CLOCK, _POSIX_CPUTIME, _POSIX_THREAD_CPUTIME은 CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID를 사용할 수 있음을 나타냅니다. (또한 sysconf (3)를 참조하십시오.) clock_settime()을 통해 해당 클럭과 연결된 프로세스당 무장 타이머에 시계를 설정하는 효과는 구현에 따라 다릅니다. . 자세한 내용은 좋은 답변을 작성하는 방법에 대한 팁을 참조하세요. 지정된 clk_id는 이 시스템에서 지원되지 않습니다.

나는 GPS 왕복에서 시간과 시간을 동기화 하는 C 프로그램을 작성 했습니다. 컴퓨터가 우분투 16.04 LTS를 실행중이다. 이 프로그램은 시간을 설정하는 clock_settime (CLOCK_REALTIME, 및 시간 스펙)을 사용합니다. 이 프로그램은 bash 스크립트에서 실행되며 데스크톱 파일을 사용하여 스크립트가 시작되면 sudo를 사용할 수 없습니다. 누구든지 아이디어가 있습니까? . . 스택 오버 플로우에 대한 답변을 기여해 주셔서 감사합니다! . _POSIX_CPUTIME이 정의된 경우 구현은 지정된 프로세스의 CPU 시간 시계를 나타내는 clock_getcpuclockid()를 호출하여 얻은 클럭 ID 값을 지원합니다. 구현은 또한 clock_*() 또는 타이머_*() 함수 중 하나를 호출할 때 호출 프로세스의 CPU 시간 시계를 나타내는 특수 clockid_t 값 CLOCK_process_CPUTIME_ID를 지원해야 합니다. 이러한 클럭 아이디의 경우 clock_gettime()에서 반환되고 clock_settime()에 의해 지정된 값은 시계와 연결된 프로세스의 실행 시간을 나타냅니다. clock_settime()을 통해 CPU 시간 클럭 값을 변경하면 산발적인 서버 예약 정책의 동작에 영향을 주지 않습니다(예약 정책 참조). 그럼 당신의 질문에 대해 당신을 도울 4.

구글에 대한 몇 가지 빠른 연구는 내가 2 분 이상이 코드를 공부하지 않은 https://github.com/karelzak/util-linux/blob/master/sys-utils/hwclock.c 저를 보냈지 만 빠른 검색은 줄 468을 보여 주었다 : clock_getres (), clock_gettime (), 및 clock_settime () 함수는 다음과 같은 경우 실패합니다. CLOCK_PROCESS_CPUTIME_ID 및 CLOCK_THREAD_CPUTIME_ID 클럭은 CPU의 타이머를 사용하여 많은 플랫폼에서 실현됩니다(i386, AR의 TSC). ITC on Itanium).