Ya - standar POSIX yang lebih lama ditentukan usleep()
, jadi ini tersedia di Linux:
int usleep(useconds_t usec);
DESKRIPSI
Fungsi usleep () menunda eksekusi utas panggilan untuk (setidaknya) usec microseconds. Tidur dapat diperpanjang sedikit oleh aktivitas sistem apa pun atau oleh waktu yang dihabiskan untuk memproses panggilan atau oleh rincian waktu sistem.
usleep()
membutuhkan mikrodetik , jadi Anda harus mengalikan input dengan 1000 agar dapat tidur dalam milidetik.
usleep()
sejak itu telah ditinggalkan dan kemudian dihapus dari POSIX; untuk kode baru, nanosleep()
lebih disukai:
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
DESKRIPSI
nanosleep()
menunda pelaksanaan utas panggilan sampai setidaknya waktu yang ditentukan *req
telah berlalu, atau pengiriman sinyal yang memicu permohonan seorang penangan di utas panggilan atau yang menghentikan proses.
Struktur timespec digunakan untuk menentukan interval waktu dengan ketepatan nanosecond. Ini didefinisikan sebagai berikut:
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
Contoh msleep()
fungsi yang diterapkan menggunakan nanosleep()
, melanjutkan tidur jika terganggu oleh sinyal:
#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*/)
dalam<unistd.h>
karya, tetapi jika saya gunakan denganprintf("some things")
tanpa\n
, itu tidak berfungsi.