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;
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|