|
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 fromsigactionis zero if it succeeds,and-1on failure. The followingerrnoerror conditions are defined for this function:
EINVAL
- Thesignumargument is not valid,or you are trying to trap or ignore
SIGKILLorSIGSTOP.
signalandsigaction
signalandsigactionfunctions within a single program,but you have to be careful because they can interact in slightly strange ways.
sigactionfunction specifies more information than thesignalfunction,so the return value fromsignalcannot express the full range ofsigactionpossibilities. Therefore,if you usesignalto 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 usessigactionat all. Sincesigactionis more general,it can properly save and reestablish any action,regardless of whether it was established originally withsignalorsigaction.
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,whilesigactionis part of the POSIX.1 standard. If you are concerned about portability to non-POSIX systems,then you should use thesignalfunction 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;
(编辑:92站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|