C 언어에서 gettimeofday 함수를 사용하는 방법은 무엇입니까?

How Use Gettimeofday Function C Language



NS gettimeofday() 함수는 시스템의 시계 시간을 가져옵니다. 현재 시간은 1970년 1월 1일 00:00:00(Unix Epoch) 이후 경과된 초 및 마이크로초로 표시됩니다. 이 기사에서는 사용 방법을 보여 드리겠습니다. gettimeofday() 리눅스에서 기능. 시작하겠습니다.

통사론

정수gettimeofday( 구조체시간적*도시, 구조체시간대*)

NS gettimeofday() 함수는 다음에서 정의됩니다. 시스템/시간.h 헤더 파일.







인수

이 함수는 두 개의 인수를 취합니다.



1주장은 다음을 가리킨다. 시간적 구조. NS 시간적 구조체는 다음과 같이 선언됩니다. 시스템/시간.h 헤더 파일:



구조체시간적{
time_t tv_sec; //초 동안 사용
suseconds_t tv_usec; //마이크로초 동안 사용
}

struct timeval 구조는 달력 시간을 나타냅니다. 두 명의 구성원이 있습니다.





  • tv_sec : Epoch 이후 경과된 시간(초)입니다.
  • tv_usec : Epoch 이후 초 계산 후 추가 마이크로초입니다. .

2NS주장은 다음을 가리킨다. 시간대 구조. 일반적으로 NULL로 설정해야 합니다. 구조체 시간대 더 이상 사용되지 않습니다. 이 인수는 이전 버전과의 호환성만을 위한 것입니다.

반환 값

성공 시, gettimeofday() 0을 반환하고 실패하면 -1을 반환합니다.



간단한 Get Time and Print

#포함하다
#포함하다

정수기본() {
구조체timeval 현재_시간;
gettimeofday(&현재 시간,없는);
인쇄 ('초: %ldN마이크로 초: %ld',
현재 시간.tv_sec,현재 시간.tv_usec);

반품 0;
}

산출:

여기, 시스템/시간.h 위해 포함되었습니다 gettimeofday() 기능 및 시간 구조. NS gettimeofday() 함수는 timeval(current_time) 구조 멤버에서 시간을 설정합니다. tv_sec은 시작 이후 경과된 정수(초)입니다. 유닉스 시대 , 1970년 1월 1일 자정 UTC이고 tv_usec는 tv_sec에서 경과된 추가 마이크로초 수입니다. 프로그램을 실행하면 출력이 표시되어야 합니다. 프로그램을 실행할 때마다 출력이 변경됩니다.

NULL 인수 오류

#포함하다
#포함하다

정수기본() {

구조체timeval 현재_시간;
gettimeofday(없는,없는);
반품 0;
}

산출:

이 예에서 첫 번째 인수는 gettimeofday() 함수는 NULL이 아니어야 합니다. 첫 번째 인수가 NULL이면 컴파일 경고가 발생합니다.

현재 시간 형식 지정 예

#포함하다
#포함하다
#포함하다

정수기본() {
구조체타임벌 TV;
time_t t;
구조체티엠*정보;
완충기[64];

gettimeofday(&TV,없는);
NS=TV.tv_sec;

정보= 현지 시각 (&NS);
인쇄 ('%NS', asctime (정보));
strftime (완충기, 크기완충기, '오늘은 %A, %B %d입니다.N',정보);
인쇄 ('%NS',완충기);
strftime (완충기, 크기완충기, '시간은 %I:%M %p입니다.N',정보);
인쇄 ('%NS',완충기);

반품 0;
}

산출:

이 예에서는 날짜와 시간을 다른 형식으로 인쇄하는 방법을 보여줍니다. 반환 값에서 날짜를 나타내는 것은 그리 쉬운 일이 아닙니다. gettimeofday() 기능 . 여기, 현지 시각() 그리고 strftime() 함수는 반환 값을 멋지게 표현하는 데 사용됩니다. gettimeofday() .

NS 현지 시각() 함수는 포인터에 대한 참조인 인수를 취합니다. tv_sec 분야의 구조체 timeval 의 포인터에 대한 참조를 반환합니다. 구조 tm 물체.

NS strftime() 함수는 날짜와 시간을 표시하는 개인화되고 형식화된 문자열을 생성합니다. 구조 tm 바늘. 형식 지정자는 형식이 지정된 표시에 사용됩니다. 예를 들어 형식 문자열 %d-%m-%Y %H:%M:%S는 다음 형식으로 날짜와 시간을 지정합니다.

04-14-2020 13:09:42

다음은 형식화된 표시에 사용할 수 있는 변환 지정자입니다.

지정자 의미
%에게 현재 로케일에 따른 요일의 축약된 이름입니다.
%에게 현재 로케일에 따른 요일의 이름입니다.
% NS 현재 로케일에 따른 축약된 월의 이름입니다.
% NS 현재 로케일에 따른 전체 월의 이름입니다.
% 씨 현재 로케일에 대한 날짜 및 시간의 기본 표현입니다.
%NS 해당 월의 10진수로 표시됩니다(범위 01 – 31).
%시간 24시간(00 – 23 범위)에서 시간을 십진수로 사용합니다.
%NS 12시간(00 – 23 범위)에서 시간을 십진수로 사용합니다.
%제이 일의 10진수로 표시됩니다(범위 001-366).
%미디엄 월의 10진수로 표시됩니다(범위 01 – 12).
%미디엄 분의 십진수입니다.
%NS 지정된 시간 값을 기반으로 'am' 또는 'pm' 또는 현재 로케일에 해당하는 문자열입니다.
%NS 초의 십진수입니다.
% NS 현재 로케일에 대한 날짜의 기본 표현이지만 시간은 없습니다.
% NS 현재 로케일의 기본 시간 표현이지만 날짜는 없습니다.
%그리고 연도는 십진법이지만 세기는 없습니다(00 – 99 범위).
%그리고 연도는 세기를 포함하여 십진수입니다.
%와 함께 시간대.

프로그램 실행 시간을 측정하기 위해 gettimeofday 사용하기

#포함하다
#포함하다

정수기본() {

구조체시간의 시작,;
gettimeofday(&시작,없는);

~을위한 (정수NS= 0;NS<1e5 ;NS++) {
}

gettimeofday(&,없는);
인쇄 ('10^5까지 세는 데 걸리는 시간은 %ld마이크로초입니다.N',
((끝.tv_sec * 1000000 +끝.tv_usec) -
(시작.tv_sec * 1000000 +시작.tv_usec)));

반품 0;
}

산출:

이 예는 어떻게 gettimeofday() 함수는 프로그램의 실행 시간을 계산하는 데 사용할 수 있습니다.

결론

이러한 방식으로, gettimeofday() 기능은 Linux에서 사용할 수 있습니다. 기존 코드를 이식하려면 gettimeofday() 기능을 사용할 수 있지만 새 코드에서는 사용하지 않아야 합니다. clock_gettime() 대신 함수를 사용할 수 있습니다. gettimeofday() .