Linux 訊號詳解三(sleep,raise)
阿新 • • 發佈:2019-01-28
//sleep 函式 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/wait.h> #include <signal.h> void catch_signal(int sign) { switch(sign) { case SIGINT: printf("accept signal!\n"); break; default: break; } } int main(int arg,char *args[]) { //註冊訊號 if(signal(SIGINT,catch_signal)==SIG_ERR) { perror("signal error"); return-1; } int num=0; num=sleep(100); //手動執行 ctrl+C 程序被喚醒 if(num>0) { printf("sleep()函式被打算睡眠,醒過來了!\n"); } //說明:sleep()函式是可中斷睡眠 printf("新的測試!\n"); //再次設計sleep()函式,讓其sleep需要的時間 num=15; do{ num=sleep(num); printf("被喚醒了,但是還要繼續睡眠!剩餘時間%d\n",num); }while(num); printf("game over!\n"); return 0; }