我正在尝试复制一个线程的上下文,包括堆栈以创建一个检查点,稍后我可以恢复该检查点。出于这个原因,我试图将 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”并退出。
现在我被困住了。提前致谢。