我正在尝试将 getcontext 调用到另一个函数中(而不是直接将其调用到 main 中),以便复制线程的堆栈并稍后恢复它。此代码应重复打印,但一旦调用 getcontext 的函数返回,它将无法工作。
有没有办法绕过这个限制并在另一个函数(内联宏除外)中调用 getcontext ?
#include <stdio.h>
#include <ucontext.h>
#include <unistd.h>
ucontext_t context;
void set_context() {
setcontext(&context);
}
void get_context() {
getcontext(&context);
}
int main() {
get_context();
puts("Hello world");
sleep(1);
set_context();
return 0;
}