Linux信号及信号处理学习总结

本文详述了Linux下的信号处理,包括注册信号处理函数(signal和sigaction)、信号集的操作(sigemptyset等)以及信号阻塞(sigprocmask、sigsuspend等)。此外,还介绍了信号发送函数(kill、raise、alarm、setitimer)及其用法,为理解和使用Linux信号提供了全面的总结。
摘要由CSDN通过智能技术生成

信号处理

注册信号调用函数

函数(1)void (*signal (int signumber,void((*func)int)))(int)

头文件:signal.h

说明:func为指向调用函数的函数指针,其也可以取特定值:SIG_IGNSIG_DFL,其中SIG_IGN表示忽略signumber所指信号,SIG_DFL表示调用系统定义的默认处理。signal函数返回值类型同参数func,其为一个指向某个返回值为空的带有一个整数参数的函数指针。该调用成功时返回上次该信号的处理函数,错误时返回SIG_ERR

函数(2)int sigaction(int sigunumber,const struct sigaction *act ,struct sigaction *oldact)

头文件:signal.h

说明: 该函数不仅可以实现signal函数的功能,还可以提供更加详细的信息,确切了解进行接收到信号时所发生的细节。其中sigaction结构如下:

struct sigaction{

    void (*sa_handler)(int);

    void (*sa_sigaction)(int,siginfo_t *,void *);

    sigset_t sa_mask;

    int sa_flags;

}

sa_hander为指向信号处理函数的地址,sa_sigaction为指向函数的指针。其中siginfo_t结构体如下:

typedef struct siginfo{

    int si_signo;//signal number

    int si_errno;//an errno value

    int si_code;//signal code

    int si_pid;//sending process ID

    INT si_uid;//real user ID of sending process

    int si_status;//exit value or signal

    clock_t si_utime;//user time consumed

    clock_t si_stime;//system time consumed

    sigval_t si_balue // signal value

    int si_int ;//POSIX.1b signal

    void *si_ptr;//POSIX.1b signal

    void *si_addr;//memory location that caused fault

    int si_band;//band event

    int si_fd;//file descriptor;

} siginfo_t;

sa_flag指示信号处理函数的不同选项,通过位运算来实现所需要的选项设置。如果赋值为0则选用所有的默认选项,其选项参数如下:

SA_NOC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值