alarm() (鬧鐘函式)

2puT發表於2016-07-23

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

Linux C

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

所需標頭檔案

編輯
#include<unistd.h>

函式原型

編輯
unsigned int alarm(unsigned int seconds);

函式引數

編輯
seconds:指定秒數

函式返回值

編輯
成功:如果呼叫此alarm()前,程式已經設定了鬧鐘時間,則返回上一個鬧鐘時間的剩餘時間,否則返回0。
出錯:-1

程式示例

編輯
該示例完成了一個簡單的sleep函式的功能,由於SIGALARM預設的系統動作為終止該程式,因此在程式呼叫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秒列印出鬧鐘

相關文章