Linux下C库学习 - signal.h

这篇博客主要探讨了Linux环境下C语言的信号处理,特别是signal.h头文件中的内容。作者提到了信号的两种类型——不可靠信号和可靠信号,并指出它们的区别在于信号丢失的可能性。文章还介绍了如何使用signal函数注册信号处理函数,并列举了函数参数的含义和选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列只是为了研究C语言的头文件,如果signal.h展开讲感觉就有点跑题了,网上有许多对信号机制的解析,写的都非常好,大家可以搜一些,这里就只对signal进行记录,以便后续继续学习。

  1. 信号
    在命令行界面输入kill -l就可以看到所以的信号以及对应的编号

列表中,编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。

细心的人可能会发现,上图的编号没有32和33,不知道是不是系统保留的信号,不过我在signum.h里面找到了这两个定义

#define SIGLOST     32  /* Resource lost (Sun); server died (GNU).  */
#define _NSIG       33  /* Biggest signal number + 1.  */

知道的大神,希望能在下方留言指点

  1. signal函数
    系统使用signal函数来注册信号处理函数,声明如下
void (*signal(int signum, void (*handler)(int)))(
/opt/arm-ca7-linux-uclibcgnueabihf-10.4.0/usr/bin/arm-linux-ar cru libm4.a gl_avltree_oset.o binary-io.o c-ctype.o c-stack.o c-strcasecmp.o c-strncasecmp.o clean-temp.o cloexec.o close-stream.o closein.o closeout.o dirname.o basename.o dirname-lgpl.o basename-lgpl.o stripslash.o execute.o exitfail.o fatal-signal.o fd-hook.o fd-safer-flag.o dup-safer-flag.o filenamecat.o filenamecat-lgpl.o fopen-safer.o freading.o gl_linkedhash_list.o gl_list.o localcharset.o glthread/lock.o malloca.o math.o memchr2.o gl_oset.o pipe2.o pipe2-safer.o printf-frexp.o printf-frexpl.o progname.o quotearg.o sig-handler.o spawn-pipe.o mkstemp-safer.o tempname.o glthread/threadlib.o glthread/tls.o tmpdir.o unistd.o dup-safer.o fd-safer.o pipe-safer.o verror.o version-etc.o version-etc-fsf.o wait-process.o wctype-h.o xmalloc.o xalloc-die.o gl_xlist.o xmalloca.o gl_xoset.o xprintf.o xsize.o xstrndup.o xvasprintf.o xasprintf.o asnprintf.o asprintf.o fclose.o fcntl.o fflush.o fpurge.o freadahead.o fseek.o fseeko.o isnanl.o printf-args.o printf-parse.o strstr.o vasnprintf.o vasprintf.o /bin/bash: /opt/arm-ca7-linux-uclibcgnueabihf-10.4.0/usr/bin/arm-linux-ar: No such file or directory Makefile:1669: recipe for target 'libm4.a' failed make[7]: *** [libm4.a] Error 127 make[7]: Leaving directory '/home/zhang/NVMP/nvmp/build_dir/host/m4-1.4.17/lib' Makefile:1602: recipe for target 'all' failed make[6]: *** [all] Error 2 make[6]: Leaving directory '/home/zhang/NVMP/nvmp/build_dir/host/m4-1.4.17/lib' Makefile:1506: recipe for target 'all-recursive' failed make[5]: *** [all-recursive] Error 1 make[5]: Leaving directory '/home/zhang/NVMP/nvmp/build_dir/host/m4-1.4.17' Makefile:1461: recipe for target 'all' failed make[4]: *** [all] Error 2 make[4]: Leaving directory '/home/zhang/NVMP/nvmp/build_dir/host/m4-1.4.17' Makefile:28: recipe for target '/home/zhang/NVMP/nvmp/build_dir/host/m4-1.4.17/.built' failed make[3]: *** [/home/zhang/NVMP/nvmp/build_dir/host/m4-1.4.17/.built] Error 2 make[3]: Leaving directory '/home/zhang/NVMP/nvmp/tools/m4' tools/Makefile:232: recipe for target 'tools/m4/compile' failed make[2]: *** [tools/m4/compile] Error 2 make[2]: Leaving directory '/home/zhang/NVMP/nvmp' tools/Makefile:195: recipe for target '/home/zhang/NVMP/nvmp/staging_dir/target-arm-openwrt-linux-gnueabi-c225v1/stamp/.tools_install_nnnnn' failed make[1]: *** [/home/zhang/NVMP/nvmp/staging_dir/target-arm-openwrt-linux-gnueabi-c225v1/stamp/.tools_install_nnnnn] Error 2 make[1]: Leaving directory '/home/zhang/NVMP/nvmp' /home/zhang/NVMP/nvmp/include/toplevel.mk:277: recipe for target 'world' failed 怎么解决呢?
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值