スリープ

プログラムの実行を一時的に休止する関数として、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;
}
コンパイル

プログラムが書かれたファイル名をtest.cとします。

gcc test.c

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;
}
コンパイル

プログラムが書かれたファイル名をtest.cとします。

gcc test.c

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;
}
コンパイル

プログラムが書かれたファイル名をtest.cとします。

gcc test.c