linux的setjmp函数和longjmp函数
来源:互联网 发布:站长之家源码 编辑:程序博客网 时间:2024/05/21 02:52
函数原型 int setjmp(jmp_buf env)
setjmp参数env的类型是一个特殊类型jmp_buf。这一数据类型是某种形式的数组,其中存放:在调用longjmp时能用来恢复栈状态的所有信息。因为需要在另一个函数中引用env变量,所以规范的处理方式是将env变量定义为全局变量。setjmp函数初次启用时返回 0 值。
函数原型 void longjmp(jmp_buf env, int val)
longjmp函数的中参数env是由setjmp函数所保存的堆栈环境、参数val设置setjmp函数的返回值。longjmp函数本
身是没有返回值的,它执行跳转到保存env参数的setjmp函数调用,并由setjmp函数调用返回,此时setjmp函数的
返回值就是 val 。
#include <setjmp.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>int j = 0;jmp_buf env;int main (){int i, k=0;// setjmp函数用于设置跳转的目的堆栈情况,直接调用该函数,则返回0,若由longjmp的调用, // 导致setjmp被调用,则返回val(longjmpd的第二个参数)// env保留了需要返回的位置的堆栈情况i = setjmp(env);printf("setjmp=[%d];j=[%d];k=[%d]\n", i, j++, k++);if (j > 5) exit(0);sleep(1);// 进行跳转longjmp(env, j);return 0;}执行截图
1 0
- linux的setjmp函数和longjmp函数
- linux setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp 和 longjmp 函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- 函数setjmp和longjmp
- Linux学习之"setjmp和longjmp函数"
- linux系统中的setjmp()和longjmp()函数
- setjmp函数和longjmp函数
- setjmp函数和longjmp函数
- setjmp 和 longjmp函数的使用
- setjmp和longjmp函数使用方法
- JavaScript——递归,嵌套和闭包
- vi vim的使用
- Redis之五种数据类型的简单增删改查
- REDIS CLUSTER简单安装配置
- 括号配对问题
- linux的setjmp函数和longjmp函数
- Caffe图片特征提取(Python/C++)
- ASP.NET的路由系统:根据路由规则生成URL
- 求教 oracle sql 能不能在条件为空时查询全部数据??纯sql写 谢谢
- iOS 自定义UIButton的title和image位置
- Xcode裁剪图片
- 公平锁与非公平锁
- 通过上传的APK文件,解析APK文件内容,获取应用权限包名等
- 初探Ajax