1. 程式人生 > >30.訊號相關函式

30.訊號相關函式

1.kill--傳送訊號給指定程序

 函式原型:int kill(pid_t pid,int sig);

2.raise--自己給自己發訊號
 相當於:kill(getpid(),sig);

 函式原型:int raise(int sig);

3.abort--給自己傳送異常終止訊號
 函式原型:void abort(void);

 沒有引數也沒有返回值,永遠不會呼叫失敗

4.鬧鐘(定時器)
 (1)alarm--設定定時器(每個程序只有一個定時器)
   使用的是自然定時法(真實生活是多少秒,就是多少秒)
   不受程序狀態的影響
  函式原型:unsigned int alarm(unsigned int seconds);
   引數:秒
   當時間到達之後,函式發出一個訊號:SIGALRM

  返回值如下:


 練習:測試你的電腦1s能數多少個數字?
  測試程式執行的時間:time 可執行程式
  real=使用者+核心+損耗
  損耗來自檔案IO操作
 (2)setitimer--定時器,並實現週期性定時
  函式原型:
   int setitimer(int which,
      ITIMER_REAL:自然定時法來定時
      ITIMER_VIRTUAL:使用者區執行的時間
      ITIMER_PROF:使用者區+核心區執行的時間
    const struct itimerval* new_value,

    struct itimer* old_value  // 一般填NULL

   );


   struct itimerval{
    struct timerval it_interval;   //定時器迴圈週期
    struct timerval it_value;     //第一次觸發定時器的時間 
   };

   struct timerval{
    time_t tv_dec;     // seconds
    suseconds_t tv_usec; // microsenconds
   };