[linux]关于ucontext库的一个小程序的注释 @ C语言

在维基百科https://en.wikipedia.org/wiki/Setcontext里面有以下一段程序,理解了这个小程序,基本上对ucontext这个执行上下文切换的库也能理解个差不多。

#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;
}

我们来看这个程序的逻辑。getcontext(&context);这个语句是要将当前上下文环境存入ucontext_t context这个变量中。而setcontext(&context);这个语句用英文来解释就是:This function transfers control to the context in ucontext_t context. Execution continues from the point at which the context was stored in ucontext_t context.中文翻译过来的意思是:当前函数(就是main函数)将转移控制到context变量中存储的上下文,执行将从存储上下文到context变量的那个点继续执行。所以这个程序的结果是:无限循环的打印hello world,想明白了吗?想明白了基本上ucontext也理解了不少了。

你可能感兴趣的:([linux]关于ucontext库的一个小程序的注释 @ C语言)