Sim - padrões POSIX mais antigos definidos usleep()
, portanto, isso está disponível no Linux:
int usleep(useconds_t usec);
DESCRIÇÃO
A função usleep () suspende a execução do encadeamento de chamada por (pelo menos) microssegundos de usec. O sono pode ser prolongado levemente por qualquer atividade do sistema ou pelo tempo gasto no processamento da chamada ou pela granularidade dos cronômetros do sistema.
usleep()
leva microssegundos , então você terá que multiplicar a entrada por 1000 para dormir em milissegundos.
usleep()
foi descontinuado e removido do POSIX; para novo código, nanosleep()
é preferido:
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
DESCRIÇÃO
nanosleep()
suspende a execução do encadeamento de chamada até que pelo menos o tempo especificado *req
tenha decorrido ou a entrega de um sinal que dispara a chamada de um manipulador no encadeamento de chamada ou que encerre o processo.
A estrutura timespec é usada para especificar intervalos de tempo com precisão de nanossegundos. É definido da seguinte forma:
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
Um exemplo de msleep()
função implementada usando nanosleep()
, continuando o sono, se for interrompido por um sinal:
#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*/)
em<unistd.h>
obras, mas se eu usar comprintf("some things")
sem\n
, não funciona.