编程语言应用

首页 » 常识 » 问答 » LinuxC语言高级编程之信号
TUhjnbcbe - 2022/8/5 16:26:00

C说话高等编程之记号

1、记号的界说

实质便是一种软件间断,它既能够做为两个过程之间通讯的一种机制,更严重的是记号老是能够结束一个程序的实行,它更多地被用于管教不料状况。间断示意顷刻停止现时程序的实行转而去实行其余程序大概管教不料状况的历程。

2、记号的根基特点

1)记号是异步的,也便是过程并不晓得记号何时会来到;

2)过程既能够发送记号,也能够管教记号;

3)每个记号都有一个名字,而且以SIG出处;

3、记号的分类

个别来讲,在linux系统中支撑的记号局限是:1~64,然则不保证持续,而在unix系统中支撑的记号局限个别是:1~48,是以倡导此后运用记号时依旧经过称呼来运用。此中1~31之间的记号叫做不行靠记号,不支撑列队,记号大概会遗失,也叫做非时刻记号;此中34~64之间的记号叫做靠得住记号,支撑列队,记号不会遗失,也叫做时刻记号。使听指示:kill-l示意观察现时系统所支撑的通盘记号。

4、几个罕见记号

1)SIGINT2运用ctrl+c形成该记号,默许管教方法结束过程;

2)SIGQUIT3运用ctrl+\形成该记号,默许方法为结束过程;

3)SIGKILL9运用kill-9形成该记号,默许方法为结束过程;

细致:SIGKILL记号只可举办默许管教,不能被用户捕获。

5、记号的管教方法

记号的管教方法分为三种,离别为:默许管教(绝大普遍记号的默许管教方法都是结束过程)、忽视管教、自界说管教。

6、记号管教函数

函数原形:

#includesignal.h

typedefvoid(*sighandler_t)(int);

sighandler_tsignal(intsignum,sighandler_thandler);

函数懂得:

这边关于typedefvoid(*sighandler_t)(int);这条语句,sighandler_t是一个函数指针,直线的是一个参数为int表率,返回值为void*表率的函数的函数指针。这边也便是用typedef界说了一个函数指针的表率。

这边signal是一个函数,具备两个参数,一个是int表率,一个是函数指针表率。而且该函数的返回值表率仍旧是函数指针表率,函数指针指向参数为int,返回值为void的函数的指针。

参数懂得:

1)signum:记号值/记号称呼(对哪个记号管教)

2)handler:记号的管教方法(怎样样管教)

记号的管教方法犹以下三种:

(1)SIG_IGN-忽视管教

(2)SIG_DFL-默许管教

(3)自界说函数的住址-自界说管教

返回值:胜利返回以前的管教方法,失利返回SIG_ERR;

功用:首要用于配置指定记号的管教方法。

预览时标签不行点收录于合集#个
1
查看完整版本: LinuxC语言高级编程之信号