특정시간 지연시키기 sleep() 함수

민성철·2022년 12월 19일
1

C언어 / C++언어

sleep() 함수는 운영체제에 따라 다르지만, 여기서는 mac과 유사한 UNIX, LINUX에서 사용하는 sleep() 함수를 알아보겠습니다.

sleep() 함수는 이용자가 지정한 시간만큼 대기할 때 사용하는 함수입니다.

윈도우에서 지원되는 함수는 앞글자가 대문자인 Sleep() 함수로 단위가 밀리초(ms)이지만,
LINUX, UNIX(MAC)에서는 전부 소문자인 sleep() 함수로 단위가 초(second)입니다.
또한, 컴파일(Compile) 해주는 헤더 파일도 다릅니다.

LINUX, UNIX(MAC)에서 사용되는 예시 코드는 아래와 같습니다.

#include <stdio.h>
#include <unistd.h>
#include <sys.time.h>

struct MyStructure {
	int myNum;
    char myLetter;
}

int main(void)
{
	struct timeval startTime, endTime;
    double diffTime;
    struct MyStructure s1;
    
    gettimeofday(&startTime, NULL);
    s1.myNum = 13;
    s1.myLetter = 'B';
    
    printf("My number : %d\n", s1.myNum);
    printf("My letter : %c\n", s1.myLetter);
    sleep(1);
    gettimeofday(&endTime, NULL);
    diffTime = (endTime.tv_sec - startTime.tv_sec) + ((endTime.tv_usec - startTime.tv_usec) / CLOCKS_PER_SEC);
    printf("%f s\n", diffTime);
    return 0;
}

output

My number : 13
My letter : B
1.000000 s
  • 위에서 윈도우에서는 밀리초 단위로 설정이 가능하다고 했습니다.
    LINUX, UNIX(MAC)에서는 이를 usleep() 함수로 대신하며, 마이크로초 단위입니다(1000000 마이크로초 = 1초)

[출처 : https://jhnyang.tistory.com/303]

profile
ENTJ-A

0개의 댓글