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

廣告


  

廣告



廣告