C言語のタイマー処理をプログラミングする

C言語ではヘッダファイル内のタイマー関連の関数を用いて、タイマー処理プログラムを作成できる。以下に簡単な例を示す。

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

void timer_handler(int signum) {
    printf("Timer expired!\n");
}

int main() {
    struct sigaction sa;
    struct itimerval timer;

    // 为定时器信号设置处理函数
    sa.sa_handler = timer_handler;
    sigemptyset(&sa.sa_mask);
    sa.sa_flags = 0;
    sigaction(SIGALRM, &sa, NULL);

    // 设置定时器时间间隔
    timer.it_value.tv_sec = 1;    // 初始超时时间为1秒
    timer.it_value.tv_usec = 0;
    timer.it_interval.tv_sec = 1; // 定时器周期为1秒
    timer.it_interval.tv_usec = 0;

    // 启动定时器
    setitimer(ITIMER_REAL, &timer, NULL);

    // 等待定时器信号
    while(1) {
        sleep(1);
    }

    return 0;
}

最初にtimer_handlerという関数を定義し、タイマーのタイムアウトシグナルを処理する。次に、sigaction関数を使用して、タイマーシグナル SIGALRMへの処理関数を設定する。続いて、itimerval構造体を使用してタイマーのタイムアウト時間と周期を設定する。ここでは、タイムアウト時間は1秒、周期も1秒に設定している。最後に、setitimer関数を使用してタイマーを起動する。そして、無限ループへ入り、タイマーシグナルが到来するのを待つ。タイマーがタイムアウトするたびに、timer_handler関数が呼び出され、「Timer expired!」というメッセージが出力される。

タイマーのタイムアウト時間とハンドラ関数を、具体的な用途に合わせてニーズに応じてカスタマイズすることが可能です。

bannerAds