Чтобы подвести итог и исправить незначительную проблему в посте Йоханнеса Вайса (не немецкая клавиатура, извините):
В старой школе POSIX вы могли бы использовать функцию usleep (), которая принимает число спящих микросекунд в качестве целочисленного аргумента без знака. Таким образом, чтобы поспать полсекунды, вы бы позвонили:
#include <unistd.h>
usleep(500000); /* Five hundred thousand microseconds is half a second. */
Для более новых программ в стиле POSIX (на страницах руководства моего Gentoo Linux box написано, что это POSIX.1-2001), вы должны использовать nanosleep (), для которого требуется указатель на структуру, содержащую период ожидания. Сон на полсекунды выглядел бы так:
#include <time.h>
struct timespec t;
t.tv_sec = 0;
t.tv_nsec = 500000000; /* Five hundred million nanoseconds is half a second. */
nanosleep(&t, NULL); /* Ignore remainder. */
Второй аргумент для nanosleep () называется «rem» и получает остаток времени, если сон каким-то образом прерывается. Я оставил это в NULL для простоты здесь. Вы можете делать цикл, пока rem не станет (достаточно близко) к нулю, чтобы убедиться, что вы действительно выспались, независимо от каких-либо прерываний.