乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Linux 定時器alarm()(轉(zhuǎn))

       _小女子_ 2013-12-24

      系統(tǒng)中的每個進程都有一個私有的鬧鐘。這個鬧鐘很像一個計時器,可以設(shè)置在一定秒數(shù)后鬧鐘。時間一到,時鐘就發(fā)送一個信號SIGALRM到進程。

       

      函數(shù)原型:unsigned int alarm(unsigned int seconds);
      頭文件:#include<unistd.h>
      函數(shù)說明: alarm()用來設(shè)置信號SIGALRM在經(jīng)過參數(shù)seconds指定的秒數(shù)后,傳送給目前的進程。如果參數(shù)seconds為0,則之前設(shè)置的鬧鐘會被取消,并將剩下的時間返回。
      返回值:如果調(diào)用此alarm()前,進程已經(jīng)設(shè)置了鬧鐘時間,則返回上一個鬧鐘時間的剩余時間,否則返回0。 出錯返回-1。

      例1:

      int main(int argc, char *argv[])
      {

       unsigned int  timeleft;

       

       printf( "Set the alarm and sleep\n" );
       alarm( 10 );
       sleep( 5 );

       

       timeleft = alarm( 0 ); //獲得上一個鬧鐘的剩余時間:5秒
       printf( "\Time left before cancel, and rearm: %d\n", timeleft );

       

       alarm( timeleft );

       

       printf( "\Hanging around, waiting to die\n" );
       pause(); //讓進程暫停直到信號出現(xiàn)

       return EXIT_SUCCESS;

      }

       

      運行結(jié)果:

      首先打   Set the alarm and sleep

      5秒后打印  Time left before cancel, and rearm: 5

                 Hanging around, waiting to die

      再經(jīng)過5秒,程序結(jié)束


      例2:

      static void timer(int sig)
      {
       static int count=0;
       count++;


       printf("\ncount = %d\n", count);

          if(sig == SIGALRM)
          {
              printf("timer\n");
          }

       

       signal(SIGALRM, timer);
       alarm(1);

       

        if (count == 5)
          alarm(0);
          return;
      }

       

      int main(int argc, char *argv[])
      {
       signal(SIGALRM, timer);
       alarm(1);
       while(1);

      }

       

      除非進程為SIGALRM設(shè)置了處理函數(shù),否則信號將殺死這個進程。比較下例中signal(SIGALRM, wakeup);語句打開與關(guān)閉的區(qū)別。

      例3:

      void wakeup()
      {
       printf("Wake Up!\n");
      }

      void main(int argc, char *argv[])
      {
       printf("sleep 3 seconds!\n");
       //signal(SIGALRM, wakeup);
       alarm(3);
       pause();
       printf("Waken!\n");
      }

       

      計時器的另一個用途是調(diào)度一個在將來的某個時刻發(fā)生的動作同時做些其他事情。調(diào)度一個將要發(fā)生的動作很簡單,通過調(diào)用alarm來設(shè)置計時器,然后繼續(xù)做別的事情。當(dāng)計時器計時到0時,信號發(fā)送,處理函數(shù)被調(diào)用。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多