gpt4 book ai didi

c - getcontext 和 setcontext 在函数中不起作用

转载 作者:太空狗 更新时间:2023-10-29 11:45:46 31 4
gpt4 key购买 nike

我正在尝试复制一个线程的上下文,包括堆栈以创建一个检查点,稍后我可以恢复它。出于这个原因,我试图将 getcontext 和 setcontext 的调用移动到一个也保存堆栈的函数中,但这行不通。

来自维基百科的工作示例:

#include <stdio.h>
#include <ucontext.h>
#include <unistd.h>

int main(int argc, const char *argv[]){
ucontext_t context;

getcontext(&context);
puts("Hello world");
sleep(1);
setcontext(&context);
return 0;
}

这只是重复打印“Hello world”。

我想做这样的事情:

#include <stdio.h>
#include <ucontext.h>
#include <unistd.h>

void set_context(ucontext_t * ct)
{
setcontext(ct);
}

void get_context(ucontext_t * ct)
{
getcontext(ct);
}

int main()
{
ucontext_t context;

get_context(&context);
puts("Hello world");
sleep(1);
set_context(&context);
return 0;
}

但这只会打印一次“Hello world”然后退出。

现在我卡住了。提前致谢。

最佳答案

一旦调用getcontext的函数返回,保存的context就失效了。这些功能的文档中对此进行了解释。

关于c - getcontext 和 setcontext 在函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951015/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com