C言語関係掲示板

過去ログ

No.80. プログラムの処理待機について


今現在、プログラムに待機時間を指定してあげて、
指定時間が過ぎたら、処理を行なわせるというプログラムを
組みたいのですが、使用する関数が調べても分かりません。

もし指定した時間だけ処理を止めるような関数がありましたら、
是非教えて頂きたいのですが。

よろしくお願い致します。


ども。

>もし指定した時間だけ処理を止めるような関数がありましたら、
>是非教えて頂きたいのですが。

非標準関数(APIとかシステムコール)でsleep()というのがあればそれを使うのが
現実的に一番いいです。

非標準でかまわないのであれば、「スリープ」とか「タイマ」とかをキーワード
にすれば、いくつかでてくると思います。

標準関数だと、ループにtime()とかclock()をしこんで、条件判定する
という方法(いわゆるビジーループ)が考えられますが、これはシステムに
非常に負荷がかかります(MS-DOSみたいなシングルスレッドなOSならこの方法も
ありかな)。残念ながら、標準関数の範囲ではいい方法はたぶんありません。。

では。



大抵の環境にはsleepとかSleepって関数がある気がします。
探してみてはどうでしょうか?

とりあえずANSIだと空ループで待たせる方法しか思いつかんです。
精度低し。

#include <stdio.h>
#include <time.h>

int main(void)
{
        int sec;
        time_t offset;

        printf("sec: ");
        scanf("%d", &sec);

        printf("wait...");
        offset = time(NULL);

        while ( time(NULL) - offset < sec );

        printf("end\n");

        return 0;
}


大抵の環境にはsleepとかSleepって関数がある気がします。
探してみてはどうでしょうか?

LSI-Cにはsleep関数がありません。


お答えくださった皆さん、ありがとうございます。

これから教えて頂きました、関数を調べてみたいと
思います。

お手数をお掛けしました。m(_ _)m

戻る


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