スリープ
プログラムの実行を一時的に休止する関数として、sleep()、usleep()、nanosleep()があります。
sleep()は秒単位、usleep()はマイクロ秒(100万分の1秒)単位、nanosleep()はナノ秒(10億分の1秒)単位で休止できます。
sleep()
#include <unistd.h> unsigned int sleep(unsigned int seconds);
sleep()は秒単位で休止できます。
使い方
#include <unistd.h> #include <stdio.h> int main() { unsigned int delay=1; printf("sleep(1 sec)\n"); sleep(delay); printf("end\n"); return 0; }
usleep()
#include <unistd.h> int usleep(useconds_t useconds);
usleep()はマイクロ秒(100万分の1秒)単位で休止できます。
使い方
#include <unistd.h> #include <stdio.h> int main() { useconds_t delay=1500000; printf("sleep(1.5 sec)\n"); usleep(delay); printf("end\n"); return 0; }
nanosleep()
#include <time.h> struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
nanosleep()はナノ秒(10億分の1秒)単位で休止できます。
rgtpで休止する時間を指定します。
シグナルで休止を中断されるとnanosleep()は-1を返し、残り時間をrmtpに保存します。このとき、rmtpがNULLの場合は保存しません。
なお、tv_nsecの上限は999999999となっています。
使い方
#include <stdio.h> #include <time.h> int main() { struct timespec delay; delay.tv_sec=1; delay.tv_nsec=500000000; printf("sleep(1.5 sec)\n"); nanosleep(&delay,NULL); printf("end\n"); return 0; }