加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Signal Handling--ref

发布时间:2021-01-25 08:01:09 所属栏目:Linux 来源:网络整理
导读:signal is a software interrupt delivered to a process. The operating system uses signals to report exceptional situations to an executing program. Some signals report errors such as references to invalid memory addresses; others report asy

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 ignoreSIGKILLorSIGSTOP.

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;

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读