系統(tǒng)中的每個(gè)進(jìn)程都有一個(gè)私有的鬧鐘。這個(gè)鬧鐘很像一個(gè)計(jì)時(shí)器,可以設(shè)置在一定秒數(shù)后鬧鐘。時(shí)間一到,時(shí)鐘就發(fā)送一個(gè)信號(hào)SIGALRM到進(jìn)程。 函數(shù)原型:unsigned int alarm(unsigned int seconds); int main(int argc, char *argv[]) }
運(yùn)行結(jié)果: 首先打印 5秒后打印 再經(jīng)過(guò)5秒,程序結(jié)束 例2: static void
timer(int sig)
int main(int argc,
char *argv[]) }
除非進(jìn)程為SIGALRM設(shè)置了處理函數(shù),否則信號(hào)將殺死這個(gè)進(jìn)程。比較下例中signal(SIGALRM, wakeup);語(yǔ)句打開(kāi)與關(guān)閉的區(qū)別。 例3: void wakeup() void main(int argc,
char *argv[])
計(jì)時(shí)器的另一個(gè)用途是調(diào)度一個(gè)在將來(lái)的某個(gè)時(shí)刻發(fā)生的動(dòng)作同時(shí)做些其他事情。調(diào)度一個(gè)將要發(fā)生的動(dòng)作很簡(jiǎn)單,通過(guò)調(diào)用alarm來(lái)設(shè)置計(jì)時(shí)器,然后繼續(xù)做別的事情。當(dāng)計(jì)時(shí)器計(jì)時(shí)到0時(shí),信號(hào)發(fā)送,處理函數(shù)被調(diào)用。 |
|
來(lái)自: _小女子_ > 《linux之類的》