• Linux setjmp longjmp


    /*********************************************************************
     *                      Linux setjmp longjmp
     * 说明:
     *     最近在看cmockery源代码的时候发现setjmp和longjmp函数,于是查了
     * 相关的内容,发现真是个好东西,可以完成函数之间的直接跳转。
     *
     *                                2016-5-7 深圳 南山平山村 曾剑锋
     ********************************************************************/
    
    一、参考文章:
        1. C 语言中 setjmp 和 longjmp
            http://www.cnblogs.com/hazir/p/c_setjmp_longjmp.html
        2. setjmp(3) - Linux man page
            http://linux.die.net/man/3/setjmp
    
    二、Demo:
        #include <stdio.h>
        #include <stdlib.h>
        #include <setjmp.h>
    
        int main(int argc, char *argv) {
            jmp_buf env;
            int i;
    
            i = setjmp(env);
            printf("i = %d.
    ", i);
            printf("check position for exit before.
    ");
            if ( i != 0 ) exit(0);
    
            printf("check position for exit after.
    ");
    
            longjmp(env, 2);
            printf("This line does not get printed.
    ");
        }
    
    三、结果:
        myzr@myzr:~/c_program$ ./a.out
        i = 0.
        check position for exit before.
        check position for exit after.
        i = 2.
        check position for exit before.
        myzr@myzr:~/c_program$ 
  • 相关阅读:
    插入排序
    排序算法结构表
    两个数字交换的四种方法
    LRU算法实现
    虚拟用户的配置
    【转】Linux查看CPU和内存使用情况
    Linux 多线程开发
    【转】RTSP流理解
    【转】DynDNS使用随笔
    【转】使用 udev 高效、动态地管理 Linux 设备文件
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5468090.html
Copyright © 2020-2023  润新知