信号堆栈

时间:2009-05-08 20:01:28

标签: c signals

我确实读过信号需要有一个单独的堆栈,为什么以及如何实现它?

是动态分配还是静态分配?如何完成内存分配?所有信号都一样吗?

2 个答案:

答案 0 :(得分:3)

信号需要单独堆栈的原因是,如果正常堆栈损坏或溢出,信号仍然可以执行。我认为信号堆栈通常是动态分配的,但它可以以任何一种方式实现。您可以使用sigaltstack设置新的信号堆栈。所有信号都是一样的。

答案 1 :(得分:1)

另一个更深奥的原因是创建用户级线程。参见Ralf Engelschall撰写的论文“便携式多线程”:http://www.gnu.org/software/pth/rse-pmt.ps。它描述了如何使用“信号栈蹦床技巧”来实现用户空间线程。