2

タイマーを作成するにはどうすればよいですか? Visual Basic のようなタイマー。タイマーが有効になっている場合は、時間切れになるまで待機します。

どのように機能するか知りたいので、既存のライブラリを使用したくありません。

だから..タイマーがどのように機能するかを誰かが説明してくれることを願っています。また、高度すぎない場合は、自分で作成するコードの例を教えてください。

編集:Linuxシステム用に作成したい。

4

2 に答える 2

5

以下は、Linux で実行される非常に基本的な例です。のマニュアルページをsignal見ると、 が支持されて非推奨になっていることがわかりますsigaction。を忘れないことが重要ですvolatile。そうしないと、while最適化によってはループが終了しない場合があります。SIGALRM他のタイマー機能によって使用される可能性のある高度に共有されたリソースがどのようにあるかにも注意してください。

プログラムはWaiting3 秒間印刷し、Finally ...1 回印刷すると終了します。

#include <stdio.h>
#include <unistd.h>
#include <signal.h>

volatile int mark = 0;

void trigger(int sig)
{
        mark = 1;
}

int main(void)
{
        signal(SIGALRM, trigger);
        alarm(3);

        while (!mark)
        {
                printf("Waiting\n");
        }
        printf("Finally ...\n");

        return 0;
}
于 2013-03-11T21:19:02.423 に答える
4

出来るよ

#include <stdio.h>
#include <unistd.h>

int main() {
    printf("wait\n");
    sleep(3);
    printf("time elapsed\n");
    return 0;
}
于 2013-03-11T21:38:01.393 に答える