複製鏈接
請複製以下鏈接發送給好友

alarm

(鬧鐘函數)

鎖定
alarm也稱為鬧鐘函數,它可以在進程中設置一個定時器,當定時器指定的時間到時,它向進程發送SIGALRM信號。可以設置忽略或者不捕獲此信號,如果採用默認方式其動作是終止調用該alarm函數的進程。
中文名
鬧鐘函數
外文名
alarm
特    點
進程發送SIGALRM信號
特    色
終止調用該alarm

alarmLinux C

alarm函數
要注意的是,一個進程只能有一個鬧鐘時間,如果在調用alarm之前已設置過鬧鐘時間,則任何以前的鬧鐘時間都被新值所代替。需要注意的是,經過指定的秒數後,信號由內核產生,由於進程調度的延遲,所以進程得到控制從而能夠處理該信號還需要一些時間。
如果有以前為進程登記的尚未超時的鬧鐘時鐘,而且本次調用的seconds值是0,則取消以前的鬧鐘時鐘,其餘留值仍作為alarm函數的返回值

alarm所需頭文件

#include<unistd.h>

alarm函數原型

unsigned int alarm(unsigned int seconds);

alarm函數參數

seconds:指定秒數

alarm函數返回值

成功:如果調用此alarm( )前,進程已經設置了鬧鐘時間,則返回上一個鬧鐘時間的剩餘時間,否則返回0。
出錯:-1

alarm程序示例

該示例完成了一個簡單的sleep函數的功能,由於SIGALRM默認的系統動作為終止該進程,因此在程序調用pause之後,程序就終止了。
#include<unistd.h>
  #include<stdio.h>
  #include<stdlib.h>
  int main(void){
    alarm(50);
    int ret;
    sleep(30);
    ret = alarm(10);
    printf("%d\n",ret);
    pause();
    return 0;
}
程序輸出:
先等待30秒 再輸出20 等待10秒打印出鬧鐘