C言語関係掲示板

過去ログ

No.223.1秒以下のSLEEP


No.1368

1秒以下のSLEEP
投稿者---おひろ(2002/04/01 09:33:06)


Solaris2.7上でSUNのCコンパイラを使用しています。
Cのプログラム内で1秒未満の処理待ちを発生させたいのですが、
どうすればいいでしょうか。
何かいい方法をお持ちのかた、教えてください。
また、プログラムをループさせるとき、全くSLEEPを入れない
ことって可能ですか?(マシン負荷的にどうでしょう)
よろしくお願いいたします。


No.1378

Re:1秒以下のSLEEP
投稿者---かずま(2002/04/02 02:38:39)


> Solaris2.7上でSUNのCコンパイラを使用しています。
> Cのプログラム内で1秒未満の処理待ちを発生させたいのですが、
> どうすればいいでしょうか。

Solaris は、よく知らないんですが、usleep という関数がありませんか。
たとえば、0.3秒(= 300,000マイクロ秒)待ちたければ、usleep(300000);

もし、usleep がなければ、select を使って実現できます。
void usleep(long usec)
{
    struct timeval tv = { usec/1000000, usec%1000000 };
    select(0, NULL, NULL, NULL, &tv);
}


No.1381

Re:1秒以下のSLEEP
投稿者---かずま(2002/04/02 19:35:49)


構造体の自動変数を、変数で初期化できるのは gcc の拡張機能なので、
Solaris ではできないかもしれません。次のように訂正します。
void usleep(long usec)
{
    struct timeval tv;
    tv.tv_sec =  usec / 1000000;
    tv.tv_usec = usec % 1000000;
    select(0, NULL, NULL, NULL, &tv);
}



No.1388

Re:1秒以下のSLEEP
投稿者---おひろ(2002/04/05 14:59:39)


教えていただいた方法でうまくいきました。
ありがとうございます。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.26
Copyright(c) 2000-2002 TOMOJI All Rights Reserved