zoukankan      html  css  js  c++  java
  • 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$ 
  • 相关阅读:
    文件上传和下载
    代理模式
    设计模式分类
    单例模式
    抽象工厂模式
    成长
    Java教程
    python面试大全
    python入门教程
    收藏网摘
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5468090.html
Copyright © 2011-2022 走看看