Eitheractionorold-actioncan be a null pointer. Ifold-actionis a null pointer,this simply suppresses the return of information about the old action. Ifactionis a null pointer,the action associated with the signalsignumis unchanged; this allows you to inquire about how a signal is being handled without changing that handling.
The return value fromsigaction is zero if it succeeds,and-1 on failure. The followingerrno error conditions are defined for this function:
EINVAL
- Thesignumargument is not valid,or you are trying to trap or ignore
SIGKILL orSIGSTOP .
signalandsigaction
signalandsigaction functions within a single program,but you have to be careful because they can interact in slightly strange ways.
sigactionfunction specifies more information than thesignal function,so the return value fromsignal cannot express the full range ofsigaction possibilities. Therefore,if you usesignal to save and later reestablish an action,it may not be able to reestablish properly a handler that was established withsigaction .
sigactionto save and restore a handler if your program usessigaction at all. Sincesigaction is more general,it can properly save and reestablish any action,regardless of whether it was established originally withsignal orsigaction .
signaland then examine it withsigaction ,the handler address that you get may not be the same as what you specified withsignal . It may not even be suitable for use as an action argument withsignal . But you can rely on using it as an argument tosigaction . This problem never happens on the GNU system.
signalfunction is a feature of ANSI C,whilesigaction is part of the POSIX.1 standard. If you are concerned about portability to non-POSIX systems,then you should use thesignal function instead.
Function Example
signal. Here is an equivalent example usingsigaction :
#include
void
termination_handler (int signum)
{
struct temp_file *p;
for (p = temp_file_list; p; p = p->next)
unlink (p->name);
}
int
main (void)
{
...
struct sigaction new_action,old_action;
(编辑:ASP站长)
【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
|