Unix-Linux 編程實踐教程 第七章 小結

  • 設置發送信號的計時器---alarm()alarm()設置當前進程的計時器到seconds秒後收到由內核發來的SIGALARM信號
  • pause()掛起調用進程知道一個信號到達,若是調用進程被整個信號終止,pause()則不會返回
  • 三種計時器:
    1. ITIMER_REAL---真實計時器,記錄進程的全部時間,包括用戶態時間、內核態時間以及睡眠時間。信號量爲SIGALARM。
    2. ITIMER_VIRTUAL---用戶態時間計時器,僅僅記錄進程的用戶態時間。信號量爲SIGVTALARM。
    3. ITIMER_PROF---實用計時器,記錄進程的用戶態時間+內核態時間。信號量爲SIGPROF。
  • 設置or獲取間隔計時器---getitimer(),setitimer()
  • 複雜的信號處理設置函數---sigaction()
    struct sigaction {
                   void     (*sa_handler)(int); //SIG_DEF,SIG_IGN,或者函數
                   void     (*sa_sigaction)(int, siginfo_t *, void *); //新的信號處理函數
                   sigset_t   sa_mask;           //當信號處理時須要被阻塞的其餘信號集
                   int        sa_flags;          //信號處理機制
                   void     (*sa_restorer)(void);
               };

  • 阻塞信號有個兩個地點,一個是信號處理者一級阻塞信號(用sigaction()),第二個是在進程一級阻塞信號(用sigprocmask())。sigprocmask()實際就是修改當前信號擋板的設置。異步

  • sigset_t是信號集類型,基本函數以下:函數

  • 向指定進程發送指定信號---kill()rest

  • 異步IO:Unix有2個異步輸入系統。一種是當輸入就緒時發送信號,另外一種是系統當輸入被讀入時發送信號。UCB中經過設置文件描述塊的O_ASYNC位來實現第一種,第二種是POSIX標準,調用aio_read。code

相關文章
相關標籤/搜索