2011-03-29 4 views
2

usleep 호출을 사용하여 응용 프로그램 (Linux 2.6.31에서 실행)을 진행합니다. 그러나 날짜 변경 (예 : date을 셸에서 사용하거나 clock_settime 다른 프로세스에서 사용)으로 복원 할 수없는 것 같습니다. 응용 프로그램이 잠기지 않도록하려면 올바른 작업은 무엇입니까?clock_settime에 복원력있는 응용 프로그램을 만드는 방법

EDIT1 응용 프로그램이 뭔가를 100ms마다하고 싶어 말. 작업이 끝나면 gettimeofday를 호출하고 다음 100ms 슬라이스까지 잠자기 상태로 남아있는 ms를 추론 한 다음 usleep을 호출합니다. 당신이 시간 간격에 대해 확인해야하는 경우

+0

일반적으로 응용 프로그램이 깨어서 실행되는 빈도는 usleep()입니다. 문제가 무엇인지 더 설명하고, 시계가 바뀌면 무엇이 잘못 될까요? – unwind

+0

@unwind. 음, 나는 그 질문을 편집했다. 그것을 바라는 것이 더 분명합니다. –

답변

2

, 현재 날짜/시간에 관한 없습니다, 당신은이 호출을 사용해야합니다 :

구조체 timespec에 팀을;
uint64_t 마이크로 초;

clock_gettime (CLOCK_MONOTONIC, & tim);
마이크로 초 = 1000000ULL * tim.tv_sec + tim.tv_nsec/1000;

시스템 가동 시간, 실제 전체 "하드웨어"시간 (수정할 수 없음)입니다.

주기 루틴에 대해 alarm() 및 setitimer()를 사용하여주기 처리기를 설정할 수 있습니다.

관련 문제