sigaltstack() - Unix,Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於 TP  

sigaltstack() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

sigaltstack - 獲取或設定備用訊號棧內容

概要

#include <signal.h>

int sigaltstack(const stack_t *ss, stack_t *oss);

其中

標籤描述
ss 指向一個在 <signal.h> 中定義的 signalstack 結構,包含呼叫後的棧內容。
oss 如果非 NULL,指向一個 signalstack 結構,包含呼叫前的棧內容。

描述

sigaction(2) 可能指示訊號應該在備用棧上執行。在這種情況下,sigaltstack(2) 將訊號儲存在備用棧結構 ss 中,在處理之前可以檢查其執行狀態。

sigaltstack 結構在 <signal.h> 中定義如下:

void *ss_sp /* SVID3 uses caddr_t ss_sp int ss_flags size_t ss_size

其中
標籤描述
ss_sp 指向棧結構。
ss_flags
 指定棧狀態為 SS_DISABLE 或 SS_ONSTACK,如下所示:

如果 ss 不是 NULL,則新狀態可以設定為 SS_DISABLE,這表示要停用棧,並且忽略 ss_sp 和 ss_size。如果未設定 SS_DISABLE,則將啟用棧。

如果 oss 不是 NULL,則棧狀態可以是 SS_ONSTACK 或 SS_DISABLE。值 SS_ONSTACK 表示程序當前正在備用棧上執行,並且在執行期間嘗試修改它將失敗。值 SS_DISABLE 表示當前訊號棧已停用。

ss_size
 指定棧的大小。
值 SIGSTKSZ 定義分配備用棧區域時使用的平均位元組數。值 MINSIGSTKSZ 定義訊號處理程式的最小棧大小。處理備用棧大小時,程式應在棧需求中包含這些值,以規劃作業系統的開銷。

返回值

sigaltstack(2) 成功返回 0,失敗返回 -1。

錯誤

sigaltstack(2) 為以下情況設定 errno:
標籤描述
EINVAL ss 不是空指標,ss 指向的 ss_flags 成員包含除 SS_DISABLE 之外的標誌。
ENOMEM備用棧區域的大小小於 MINSIGSTKSZ。
EPERM嘗試修改活動棧。

標準

此函式符合:XPG4-UNIX。

參見

getcontext(2), sigaction(2), sigsetjmp(3)。

previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.