日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux学习之系统编程篇:与产生信号有关的函数

發(fā)布時間:2024/9/30 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux学习之系统编程篇:与产生信号有关的函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、kill

kill : 給指定的進程法信號。
(1)頭文件:

#include <sys/types.h>#include <signal.h>

(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 raise(int sig);

等價于 int kill(getpid(), int sig);

三、abort

abort :給自己發(fā)異常終止信號(SIGABRT / 6 號)并產(chǎn)生 core 文件。
函數(shù)原型:

void abort(void)

四、alarm

定時器alarm 函數(shù):當(dāng)時間到達之后,函數(shù)發(fā)出一個信號 :SIGALR(14)。
(1)函數(shù)原型:

unsigned int alarm(unsigned int seconds);

(2)參數(shù):秒(多少秒后發(fā)出信號),取 0 代表取消鬧鐘。
(3)返回值:上一個定時還有多少時間發(fā)信號。
注意:
(1)使用的是自然定時法則(時間運行是絕對的,不受進程影響,比如進程卡頓,時間照走)。按照實際使用時間計量“用戶使用時間 + 內(nèi)核使用時間 + 損耗時間”。
(2)每個進程只能有一個定時器。

五、setitimer

setitimer 函數(shù):實現(xiàn)周期式定時。
(1)函數(shù)原型:

int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);

(2)參數(shù):
1)which:(定時法則 – 信號) 重點在于法則和信號的對應(yīng)關(guān)系,為了知道該捕捉那個信號,詳細如下:
ITIMER_REAL – SIGALRM :自然法則 “用戶 + 內(nèi)核 + 損耗”。
TIMER_VIRTUAL – SIGVTALRM : 按照“用戶”計量。
ITIMER_PROF – SIGPROF :按照“用戶 + 內(nèi)核”計量。
2) struct itimerval * new_value:用于設(shè)置鬧鐘
首先認識 2 個結(jié)構(gòu)體(嵌套關(guān)系)

struct itimerval // 外層結(jié)構(gòu)體 -- 我們最終要用的{struct timeval it_interval; // 設(shè)置周期struct timeval it_value; // 設(shè)置第一次鬧鐘時間}; struct timeval // 內(nèi)層結(jié)構(gòu)體 -- 更精準(zhǔn)的修飾時間(相加關(guān)系) {time_t tv_sec; // sec 秒鐘suseconds_t tv_usec; // usec 微秒 };

結(jié)構(gòu)體使用方法:
例如

struct itimerval new_value = { {5, 300}, {2, 100} };//第一個定時器為 2 秒 100 微秒后,以后定時器時間間隔為 5 秒 300 微秒

3)struct itimerval *old_value:上一個定時器的屬性,一般傳 NULL。
整體使用:

struct itimerval new_value = { {5, 0}, {2, 0} }; setitimer( ITIMER_REAL, &new_value, NULL ); //采用自然法則,第一個鬧鐘為 2s 后,周期 5s

總結(jié)

以上是生活随笔為你收集整理的Linux学习之系统编程篇:与产生信号有关的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。