Linux学习之系统编程篇:与产生信号有关的函数
一、kill
kill : 給指定的進程法信號。
(1)頭文件:
(2)函數(shù)原型:
int kill(pid_t pid, int sig);(3)參數(shù):
pdi > 0: 定向發(fā)送
pdi = 0 :同組所有進程
pdi = -1 :有權(quán)利發(fā)送的所有進程
pdi < -1 :指定組 id 內(nèi)的所有進程(取反)
sig :發(fā)出的信號(建議寫宏,不寫數(shù)字)
(4)返回值:
成功: 0
失敗:-1
二、raise
raise : 給自己發(fā)信號 。
函數(shù)原型:
等價于 int kill(getpid(), int sig);
三、abort
abort :給自己發(fā)異常終止信號(SIGABRT / 6 號)并產(chǎn)生 core 文件。
函數(shù)原型:
四、alarm
定時器alarm 函數(shù):當(dāng)時間到達(dá)之后,函數(shù)發(fā)出一個信號 :SIGALR(14)。
(1)函數(shù)原型:
(2)參數(shù):秒(多少秒后發(fā)出信號),取 0 代表取消鬧鐘。
(3)返回值:上一個定時還有多少時間發(fā)信號。
注意:
(1)使用的是自然定時法則(時間運行是絕對的,不受進程影響,比如進程卡頓,時間照走)。按照實際使用時間計量“用戶使用時間 + 內(nèi)核使用時間 + 損耗時間”。
(2)每個進程只能有一個定時器。
五、setitimer
setitimer 函數(shù):實現(xiàn)周期式定時。
(1)函數(shù)原型:
(2)參數(shù):
1)which:(定時法則 – 信號) 重點在于法則和信號的對應(yīng)關(guān)系,為了知道該捕捉那個信號,詳細(xì)如下:
ITIMER_REAL – SIGALRM :自然法則 “用戶 + 內(nèi)核 + 損耗”。
TIMER_VIRTUAL – SIGVTALRM : 按照“用戶”計量。
ITIMER_PROF – SIGPROF :按照“用戶 + 內(nèi)核”計量。
2) struct itimerval * new_value:用于設(shè)置鬧鐘
首先認(rèn)識 2 個結(jié)構(gòu)體(嵌套關(guān)系)
結(jié)構(gòu)體使用方法:
例如
3)struct itimerval *old_value:上一個定時器的屬性,一般傳 NULL。
整體使用:
總結(jié)
以上是生活随笔為你收集整理的Linux学习之系统编程篇:与产生信号有关的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux学习之系统编程篇: 阻塞信号集
- 下一篇: Linux学习之系统编程篇:利用 set