C語(yǔ)言定時(shí)器的使用方法是什么

小億
170
2023-12-14 16:32:36

C語(yǔ)言中使用定時(shí)器的方法有多種,其中常用的有以下幾種:

  1. 使用sleep函數(shù):sleep函數(shù)可以讓程序暫停指定的時(shí)間,單位是秒。例如,要讓程序暫停2秒,可以使用sleep(2)函數(shù)。
#include <stdio.h>
#include <unistd.h>

int main() {
    printf("Start\n");
    sleep(2); // 暫停2秒
    printf("End\n");
    
    return 0;
}
  1. 使用usleep函數(shù):usleep函數(shù)與sleep函數(shù)類似,但單位是微秒(1秒=1000000微秒)。例如,要讓程序暫停500毫秒,可以使用usleep(500000)函數(shù)。
#include <stdio.h>
#include <unistd.h>

int main() {
    printf("Start\n");
    usleep(500000); // 暫停500毫秒
    printf("End\n");
    
    return 0;
}
  1. 使用alarm函數(shù):alarm函數(shù)可以在指定的時(shí)間后觸發(fā)一個(gè)信號(hào)。例如,要在5秒后觸發(fā)一個(gè)信號(hào),可以使用alarm(5)函數(shù)。
#include <stdio.h>
#include <unistd.h>
#include <signal.h>

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

int main() {
    signal(SIGALRM, handler); // 注冊(cè)信號(hào)處理函數(shù)
    printf("Start\n");
    alarm(5); // 5秒后觸發(fā)信號(hào)
    sleep(10); // 等待10秒,以保證能收到信號(hào)
    printf("End\n");
    
    return 0;
}
  1. 使用setitimer函數(shù):setitimer函數(shù)可以設(shè)置一個(gè)定時(shí)器,當(dāng)定時(shí)器計(jì)時(shí)到達(dá)時(shí),會(huì)觸發(fā)一個(gè)信號(hào)。例如,要在2秒后觸發(fā)一個(gè)信號(hào),可以使用setitimer函數(shù)。
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
#include <signal.h>

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

int main() {
    struct itimerval timer;
    timer.it_value.tv_sec = 2; // 定時(shí)器初始值為2秒
    timer.it_value.tv_usec = 0;
    timer.it_interval.tv_sec = 0; // 定時(shí)器間隔為0秒,即只觸發(fā)一次
    timer.it_interval.tv_usec = 0;
    
    signal(SIGALRM, handler); // 注冊(cè)信號(hào)處理函數(shù)
    printf("Start\n");
    setitimer(ITIMER_REAL, &timer, NULL); // 設(shè)置定時(shí)器
    sleep(5); // 等待5秒,以保證能收到信號(hào)
    printf("End\n");
    
    return 0;
}

以上是幾種常見的C語(yǔ)言中使用定時(shí)器的方法,具體使用哪種方法取決于需求和場(chǎng)景。

0