Unix下編程很容易遇到這個函數,我們可以先看下這個函數的介紹,用man工具,man alarm。
對於Unix系統的聯機幫助中關於alarm函數的介紹如下:
- #include <unistd.h>
- unsigned int alarm(unsigned int seconds);
它的主要功能是設置信號傳送鬧鐘。其主要功能用來設置信號SIGALRM在經過seconds指定的秒數後傳送給目前的進程,如果在定時未完成的時間內再次調用了alarm函數,則後一次定時器設置將覆蓋前面的設置,當seconds設置為0時,定時器將被取消。它返回上次定時器剩余時間,如果是第一次設置則返回0。
舉個簡單的例子:
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <signal.h>
-
- void sig_alarm()
- {
- exit(0);
- }
- int main(int argc, char *argv[])
- {
- signal(SIGALRM, sig_alarm);
- alarm(10);
- sleep(15);
- printf("Hello World!\n");
- return 0;
- }
程序在10s後結束,並未輸出Hello World!