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

广告


  

广告



广告