예-이전 POSIX 표준이 정의 usleep()
되었으므로 Linux에서 사용할 수 있습니다.
int usleep(useconds_t usec);
기술
usleep () 함수는 (적어도) usec 마이크로 초 동안 호출 스레드의 실행을 일시 중단합니다. 시스템 활동이나 호출 처리에 소요 된 시간 또는 시스템 타이머 단위로 인해 절전 시간이 약간 길어질 수 있습니다.
usleep()
마이크로 초가 걸리므 로 밀리 초 단위로 절전 모드로 전환하려면 입력에 1000을 곱해야합니다.
usleep()
이후 더 이상 사용되지 않으며 POSIX에서 제거되었습니다. 새 코드의 경우 nanosleep()
선호됩니다.
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
기술
nanosleep()
최소한 지정된 시간 *req
이 경과하거나 호출 스레드에서 핸들러 호출을 트리거하거나 프로세스를 종료하는 신호 전달이 완료 될 때까지 호출 스레드 실행을 일시 중단합니다 .
구조 timespec은 나노초 정밀도로 시간 간격을 지정하는 데 사용됩니다. 다음과 같이 정의됩니다.
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
신호로 중단 된 경우 절전 모드를 계속 msleep()
사용하여 구현 된 예제 함수 nanosleep()
:
#include <time.h>
#include <errno.h>
/* msleep(): Sleep for the requested number of milliseconds. */
int msleep(long msec)
{
struct timespec ts;
int res;
if (msec < 0)
{
errno = EINVAL;
return -1;
}
ts.tv_sec = msec / 1000;
ts.tv_nsec = (msec % 1000) * 1000000;
do {
res = nanosleep(&ts, &ts);
} while (res && errno == EINTR);
return res;
}
sleep(/*seconds*/)
에<unistd.h>
내가 함께 사용하는 경우 작동하지만printf("some things")
없는\n
, 그하지 작동합니다.