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!