1. 程式人生 > >Linux 訊號詳解三(sleep,raise)

Linux 訊號詳解三(sleep,raise)

//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; }