getcontext() - Unix,Linux系统调用
Tutorials Point


  Unix初学者指南
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考资料     讨论论坛     关于TP  

getcontext() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

getcontext, setcontext - 获取或设置用户上下文

概要

#include <ucontext.h>

int getcontext(ucontext_t *ucp);
int setcontext(const ucontext_t *ucp);

其中

标签描述
ucp 指向在<ucontext.h>中定义的结构体,包含信号掩码、执行堆栈和机器寄存器。

描述

getcontext(2) 获取调用进程的当前上下文,将其存储在ucp指向的ucontext结构体中。

setcontext(2) 将调用进程的上下文设置为ucp指向的ucontext结构体中存储的状态。该结构体必须由getcontext(2)创建,或者作为sigaction(2)信号处理程序的第三个参数传递。

getcontext(2)创建的ucontext结构体在<ucontext.h>中定义如下:

typedef struct ucontext
  {
      unsigned long int uc_flags;
      struct ucontext *uc_link;
      stack_t uc_stack;
      mcontext_t uc_mcontext;
      __sigset_t uc_sigmask;
      struct _fpstate __fpregs_mem;
    } ucontext_t;

返回值

getcontext(2) 成功返回0,失败返回-1。setcontext(2) 成功时不返回值,失败返回-1。

标准

这些函数符合:XPG4-UNIX。

注释

当信号处理程序执行时,当前用户上下文被保存,内核创建一个新的上下文。如果调用进程使用longjmp(2)离开信号处理程序,则无法恢复原始上下文,并且将来调用getcontext(2)的结果是不可预测的。为了避免这个问题,在信号处理程序中使用siglongjmp(2)或setcontext(2)代替longjmp(2)。

参见

sigaltstack(2), sigprocmask(2), sigsetjmp(3), setjmp(3).

previous next Printer Friendly

广告


  

广告



广告