Evet - eski POSIX standartları tanımlanmıştır usleep()
, bu nedenle bu Linux'ta mevcuttur:
int usleep(useconds_t usec);
AÇIKLAMA
Usleep () işlevi, çağıran iş parçacığının yürütülmesini (en azından) usec mikrosaniye için askıya alır. Uyku, herhangi bir sistem aktivitesi veya aramanın işlenmesi için harcanan süre veya sistem zamanlayıcılarının ayrıntı düzeyi nedeniyle biraz uzatılabilir.
usleep()
mikrosaniye alır , bu nedenle milisaniye içinde uyumak için girişi 1000 ile çarpmanız gerekir.
usleep()
o zamandan beri kullanımdan kaldırıldı ve daha sonra POSIX'ten kaldırıldı; yeni kod nanosleep()
için tercih edilir:
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
AÇIKLAMA
nanosleep()
en azından içinde belirtilen süre geçene kadar ya da çağıran iş parçacığındaki *req
bir işleyicinin çağrılmasını tetikleyen ya da süreci sonlandıran bir sinyalin teslimine kadar çağıran evrenin yürütülmesini askıya alır .
Zaman belirtimi yapısı, nanosaniye hassasiyetiyle zaman aralıklarını belirtmek için kullanılır. Aşağıdaki gibi tanımlanır:
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
Bir sinyalle kesintiye uğrarsa uykuya devam ederek msleep()
uygulanan örnek bir işlev 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*/)
içinde<unistd.h>
ı ile kullanırsanız eserler, ancakprintf("some things")
olmadan\n
, onun değil çalışır.