色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁(yè) > 博客 > setitimer函數(shù)使用筆記

          setitimer函數(shù)使用筆記

          發(fā)布人:電子禪石 時(shí)間:2021-11-16 來(lái)源:工程師 發(fā)布文章

          轉(zhuǎn)載

          setitimer函數(shù)使用筆記

          函數(shù)原型int setitimer(int which, const struct itimerval *value,
                               struct itimerval *ovalue);

          DESCRIPTION
                 The  system  provides each process with three interval timers, each decrementing in a distinct time domain.  When any timer expires, a
                 signal is sent to the process, and the timer (potentially) restarts.

                 ITIMER_REAL    decrements in real time, and delivers SIGALRM upon expiration.

                 ITIMER_VIRTUAL decrements only when the process is executing, and delivers SIGVTALRM upon expiration.

                 ITIMER_PROF    decrements both when the process executes and when the system is executing on behalf  of  the  process.   Coupled  with
                                ITIMER_VIRTUAL, this timer is usually used to profile the time spent by the application in user and kernel space.  SIG-
                                PROF is delivered upon expiration.

                 Timer values are defined by the following structures:

                      struct itimerval {
                          struct timeval it_interval; /* next value */
                          struct timeval it_value;    /* current value */
                      };
                      struct timeval {
                          long tv_sec;                /* seconds */
                          long tv_usec;               /* microseconds */
                      };

          #include <stdio.h>
          #include 
          <unistd.h>
          #include 
          <signal.h>
          #include 
          <string.h>
          #include 
          <sys/time.h>
          #include 
          <errno.h>

          void PrintMsg(int Num)
          {
              printf(
          "%s\n""Hello World");

              
          return;
          }

          int main(int argc, char* argv[])
          {
              signal(SIGALRM, PrintMsg);

              
          struct itimerval tick;
              tick.it_value.tv_sec 
          = 10;  //十秒鐘后將啟動(dòng)定時(shí)器
              tick.it_value.tv_usec = 0;
              tick.it_interval.tv_sec  
          =1//定時(shí)器啟動(dòng)后,每隔1秒將執(zhí)行相應(yīng)的函數(shù)
              tick.it_interval.tv_usec = 0;

              
          //setitimer將觸發(fā)SIGALRM信號(hào)
              int ret = setitimer(ITIMER_REAL, &tick, NULL);

              
          if ( ret != 0)
              {
                  printf(
          "Set timer error. %s \n", strerror(errno) );

                  
          return -1;
              }

              printf(
          "Wait!\n");

              getchar();

              
          return 0;
          }

          加群:1732700158


          *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



          關(guān)鍵詞: linux

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉