setjmp 和 longjmp - 通过示例进行理解
我知道setjmp和longjmp的定义。 setjmp 将环境存储在堆栈上下文中,另一个恢复。 但我认为我的部分还存在一些缺乏理解的地方。有人可以在很好的例子的…
利用 jmp_buf 结构中的缓冲区溢出
我需要帮助来利用 jmp_buf 结构上的缓冲区溢出。 我在堆栈上有以下值(由 gdb 看到): 0xbffffc40: 0xb7fd8ff4 0x080485a0 0x080483f0 0xbffffcf8 0x…
C setjmp.h和ucontext.h,哪个更好?
嗨,我需要从一个地方跳到另一个地方... 但我想知道 setjmp 或 ucontext 哪个更好用,例如: setjmp 和 ucontext 是否可移植? 使用这些库我的代码是…
setjmp 和 GCC 的合法用途
使用 GCC(对我来说是 4.0)是合法的: if(__builtin_expect(setjmp(buf) != 0, 1)) { // handle error } else { // do action } 我发现一个讨论说它…
将 jmp_buf 声明为指针
我试图将 jmp_buf 定义为指针并在嵌套的 longjmp(s) 中使用它。如下所示: ... jmp_buf *bfj; ... 然后编写 if else: if( setjmp(*bfj) == 0){ DS[SP-…
在 C 中:发送 func 指针,用它调用 func,使用 EIP、jmp_buf 和 longjmp
我需要确保我首先了解一些基本的东西: 如何将函数 A 作为参数传递给函数 B? 如何从 B 内部调用函数 A? 现在,最大的打击是: 我正在尝试按照以下方…
我可以撤消或删除 atexit 命令吗?
如果我将 atexit( fn ); 放在退出堆栈上,它将在程序退出时执行:从 main() 返回或通过 exit()。 我可以将其从堆栈中删除吗? 你问我为什么要这样做?…
使用信号处理程序和 setjmp/longjmp 实现抢占式微线程
我想在Linux环境中实现符合POSIX标准的微线程。基本思想如下: 使用此处描述的技术,分配新堆栈每根光纤的空间。 使用 setitimer,创建以恒定时间间隔…
Jmp_buf 结构中的每个条目保存什么?
我运行的是 Ubuntu 9.10 (Karmic Koala),我查看了 jmp_buf 结构,它只是一个 12 个整数的数组。当我使用 setjmp 并传入 jmp_buf 结构时,12 个条目中…
有哪些“好”的东西? 如何使用 longjmp/setjmp 进行 C 错误处理?
我必须在一个项目中使用 C,并且我正在考虑使用 longjmp/setjmp 进行错误处理,因为我认为在一个中心位置处理错误比返回代码要容易得多。 如果有一些…