2012-09-26 51 views
1

如果我叫在我的代码开头的sigaction,sigaction:恢复处理程序或不?

sigaction(SIGPIPE, &pipe_act, NULL); 

如果我收到SIGPIPE,pipe_act执行后安装的处理器仍然pipe_Act,或默认处理程序为SIGPIPE自动设置?

+0

你真的需要'sigaction',或将简单的'signal'足够? –

回答

2

这取决于你的标志(pipe_act->sa_flags)是否包含SA_RESETHAND。如果是,则信号处理程序是“一次性”,并已得到调用后获取删除(即处理程序重置为默认的处理器),但如果没有,那么直到您手动更改它的处理器保持在原位。

+0

我不知道SA_RESETHAND(直到现在)。我不会以任何方式修改该标志。所以它仍然是pipe_act? – giozh

+0

@giozh:正确,标志未被默认设置。 –