a174787252 发表于 2015-08-27 20:39

关于signal()函数问题

假设一个场景:

function //do something about i/o
int main()
{
signal( SIGHUP,function);
kill(getpid, SIGHUP);

      ... //dosomething aboutI/O
exit();
}

信号处理程序之间涉及到的资源同步 共享问题要自己来处理对么

要自己处理??

因为信号注册的 处理函数 和程序下文 都有处理同一个I/O

demilich 发表于 2015-08-28 07:47

是的,所以信号处理函数要做到:异步信号安全,而处理同一个I/O这种明显就不是异步信号安全的做法。

a174787252 发表于 2015-08-31 16:00

回复 2# demilich


    我也是才读到apue第十章产生了以上的疑惑,不过读完了第十章也对这部分内容有了进一步的了解


关键是内核对未决信号控制(这里涉及到的就是信号的可靠性,如果单纯用signal+sigpromask+sigspending),操作上来说难度会大于signalaction.

signalaction对开发来说会提供大大的便利对吗
页: [1]
查看完整版本: 关于signal()函数问题