Так - визначені старі стандарти POSIXusleep()
, тому це доступно в 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
не минув принаймні час, зазначений у , або подача сигналу, який запускає виклик обробника в потоці виклику, або який припиняє процес.
Часовий спектр структури використовується для визначення інтервалів часу з наносекундною точністю. Він визначається наступним чином:
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
, це не працює.