• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 一個使用setjmp/longjmp從信號中恢復的小例子

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    下面這個程序使用setjmp/longjmp和信號處理。這樣,程序在收到一個ctrl-c時 將重新啟動,而不是退出。 #include s td io.h #include signal.h #include setjmp.h jmp_buf buf; void handler(int sig) if (sig == SIGINT) printf(Now got a SIGINT signal\n);
    下面這個程序使用setjmp/longjmp和信號處理。這樣,程序在收到一個ctrl-c時
    將重新啟動,而不是退出。

    #include <stdio.h>
        #include <signal.h>
        #include <setjmp.h>

        jmp_buf buf;

        void
        handler(int sig)
        {
     if (sig == SIGINT) printf("Now got a SIGINT signal\n");
     longjmp(buf, 1);
     /* can't get here */
        }

        int
        main(void)
        {
     signal(SIGINT, handler);
     if (setjmp(buf)) {
         printf("back in main\n");
         return 0;
     } else
         printf("first time through\n");
        loop:
     /* spin here, waiting for ctrl-c */
     goto loop;
        }
        注意:系統并不支持在信號處理程序內部調用庫函數(除非嚴格符合標準所限制的
        條件)。這里只是為了演示方便,實際代碼中不能這樣使用:-)

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>