青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線忘掉

Linux下的信號處理

一個最簡單的信號信號處理例子:
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

void signal_rec(int signum, siginfo_t *info, void *myop)
{
?printf("receive signal %d\n", signum);
?sleep(5);?
}

int main(int argc,char **argv)
{
?struct sigaction act;
?int sig,i;
?
?sigemptyset(&act.sa_mask);
?act.sa_flags = SA_SIGINFO;
?act.sa_sigaction = signal_rec;
?
?for(i=1; i<argc; i++){ //argv[0]為調用程序名
??sig = atoi(argv[i]);
??if(sigaction(sig, &act, NULL) <0){
???printf("install signal error\n");
??}?
?}
?
?while(1){
??sleep(2);
??printf("wait for the signal\n");
?}
}
用法:
將文件保存為test.c,執行make test,編譯生成test文件。
./test 36 39&
命令的意思是注冊信號36,39。命令結果會返回pid,假設為2625。
通過另外一個終端向2625進程發送信號。例如:kill -s 36 2625
則我們可以看到signal_rec函數被執行了。
當我們發送40信號,我們會發送程序終止了,這是因為對于實時信號,默認的操作是終止。
關于信號:
?Linux 支持的信號分為可靠信號和不可靠信號。此處的可靠與不可靠不是指系統是不是可靠的可靠,而是對于可靠信息來說,每一次信號發實都每被加到信號鏈中,所以是 可靠的;而對于不可靠信號來說,如果進程之前已經接收到該信號,則不會被加到信號鏈中,因此對于此次發送的信號來說,對于該進程來說是不知道的,所就是說 信號丟失了,因此是不可靠的。
?不可靠信號主要是在早期信號機制上的信號。一般來說,信號值小于SIGRTMIN的信號為不可靠信號,不可靠信號又稱為非實時信號。可靠信號又稱為實時信號。實時信號是SIGRTMIN和SIGRTMAX間的所有信號。
?我們可以通過kill -l查看SIGRTMIN和SIGRTMAX的值。在Debian系統和Redhat上面,一般SIGRTMIN=33,SIGRTMAX=64。
?Linux既支持新的信號安裝函數sigation以及信號發送函數sigqueue,又支持早期的signal信號安裝函數和kill信號發送函數。
?信號的可靠與不可靠只與信號值有關,與信號的發送和安裝函數無關,也就是說在Linux下即使使用sigaction和sigqueue也不可能將不可靠信號變為可靠信號。
信號發送函數主要有以下幾個:kill,raise,sigqueue,alarm,settimer,abort。
信號安裝函數主要有signal和sigaction。sigaction主要用于與sigqueue系統調用配合使用,主要用于實時信號處理。
信號集操作主要有以下幾個函數:sigemptyset,sigfillset,sigaddset,sigdelset,sigismember。
信號的阻塞的未決主要有以下幾個函數:sigprocmask,sigsuspend,sigpending。
最后以一個讀串口設備時用到的信號處理作為結尾(在上次的初始化串口設備中已經出現過):
在讀取設備數據或者進行網絡應用的時候,為了防止程序進入死鎖,我們需要設置超時操作,即比如我們讀串口設備,嘗試一定時間后仍然沒有響應,則可能設備沒有正常工作。那么在超時以后我們需要退出,否則程序就鎖住了。
我們現在使用SIGALRM信號來進行這個處理(這種方式并不是最好的辦法):
我們假設有一個標記是否超時的全局變量caught_alrm,默認為0,為1時則表示超時。
static volatile sig_atomic_t caught_alrm;
static void sig_alrm(int signo){//信號處理函數,設置超時全局變量為1。
??????? caught_alrm = 1;
??????? return;
}
int a_function{
?……
??? if(signal(SIGALRM, sig_alrm) == SIG_ERR){
??? ?syslog(LOG_ERR,"signal error in function:%s",__FUNCTION__);
??????? return -1;
??? }
??? caught_alrm = 0;
??? alarm(expalarm);
??? do{
??? ?//do something
??? ?//if the work is finished,call alarm(0) to clean the timer.
??? }while(caught_alrm == 0);
}
注:
1、本文為整理以前的工作筆記,如果您要轉載,請注意來源為爾雅,作者覃士國。如果您有任何問題歡迎交流:shiguo.qin@gmail.com
2、 此文僅僅是一則筆記,如果您正在尋找關于Linux信號編程方面的資料,可以參考鄭彥興的一篇文章:http://www- 128.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html。此文詳細描述了很多關于信 號處理中的結構等內容,是學習信號編程的一篇不錯的教程式文章。

?

posted on 2007-08-02 00:25 旅途 閱讀(839) 評論(0)  編輯 收藏 引用 所屬分類: Linux開發

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩国产一区精品一区| 亚洲免费一区二区| 欧美精品18+| 久久人人97超碰国产公开结果| 玖玖玖免费嫩草在线影院一区| 亚洲综合色激情五月| 香蕉久久国产| 亚洲国内在线| 久久人人97超碰国产公开结果| 亚洲免费av观看| 嫩草成人www欧美| 亚洲国产婷婷香蕉久久久久久| 欧美性大战久久久久| 久久久人成影片一区二区三区观看 | 国产伦理精品不卡| 亚洲视频axxx| 久久久亚洲影院你懂的| 久久精品在线观看| 日韩一区二区久久| 亚洲欧美在线一区二区| 久久疯狂做爰流白浆xx| 欧美第十八页| 性感少妇一区| 欧美三区视频| 欧美成人乱码一区二区三区| 一区二区三区免费观看| 黄色成人在线网站| 一区二区成人精品| 午夜精品福利一区二区蜜股av| 欧美日韩国产免费观看| 久久久国产91| 欧美一区三区二区在线观看| 国产精品丝袜91| 亚洲欧美成人在线| 久久精品国产亚洲a| 国产亚洲欧美日韩一区二区| 一本久久精品一区二区| 久久综合给合久久狠狠色| 亚洲精品欧美专区| 国产精品素人视频| 欧美aⅴ一区二区三区视频| 欧美bbbxxxxx| 欧美日韩精品在线视频| 欧美高清hd18日本| 久久亚洲综合色| 亚洲免费av片| 国模私拍一区二区三区| 欧美日韩一卡二卡| 欧美日韩调教| 国产精品一区二区男女羞羞无遮挡| 久久精品亚洲精品| 亚洲视频一区二区在线观看| 校园春色综合网| 在线亚洲免费| 欧美一区二区在线免费观看| 狠狠色伊人亚洲综合网站色| 久久久久久亚洲精品中文字幕| 免费不卡亚洲欧美| 亚洲精品一区二区三区99| 亚洲国产精品免费| 久久九九久久九九| 久久精品女人| 午夜影视日本亚洲欧洲精品| 亚洲精品小视频在线观看| 国产精品二区二区三区| 欧美伦理视频网站| 国产精品家教| 欧美人交a欧美精品| 国产在线乱码一区二区三区| 欧美精品一区二区三区一线天视频| 国产精品系列在线| 国产午夜精品全部视频播放| 亚洲国产精品美女| 一区二区三区欧美成人| 久久爱www.| 亚洲乱码国产乱码精品精可以看 | 亚洲欧美视频在线观看| 欧美在线看片a免费观看| 国产精品自在欧美一区| 欧美日韩国产一级片| 欧美三级韩国三级日本三斤| 久久国产欧美精品| 久久综合九色九九| 欧美一区二区精品| 国产日韩精品在线播放| 精品成人在线观看| 亚洲激情中文1区| 久久久999成人| 女女同性精品视频| 91久久精品网| 中文日韩在线| 久久久国产成人精品| 欧美日韩三级| 国产精品视频专区| 99视频精品在线| 亚洲视频1区| 久久一区亚洲| 亚洲在线一区| 亚洲三级视频| 亚洲人精品午夜在线观看| 在线观看日韩精品| 一区二区欧美在线观看| 欧美日本高清| 精品99视频| 欧美中文字幕在线视频| 亚洲日韩中文字幕在线播放| 亚洲欧美日韩精品久久奇米色影视| 亚洲午夜激情在线| 亚洲精品美女91| 亚洲色图自拍| 亚洲欧美另类综合偷拍| 国产农村妇女毛片精品久久麻豆 | 亚洲第一偷拍| 久久成人精品视频| 久久精品伊人| 亚洲区国产区| 蜜桃av综合| 欧美午夜激情在线| 久久爱www| 亚洲视频中文字幕| 欧美激情一区二区三区成人| 中文欧美字幕免费| 美玉足脚交一区二区三区图片| 国产欧美午夜| 久久久久久一区二区| 久久久一区二区三区| 一区二区三区精品视频| 日韩视频―中文字幕| 国产欧美日韩免费看aⅴ视频| 亚洲欧美日韩直播| 在线综合亚洲| 国产精品夫妻自拍| 欧美在线观看视频在线| 亚洲综合精品自拍| 尤物九九久久国产精品的特点| 久久精品视频在线看| 亚洲国产中文字幕在线观看| 欧美一级淫片aaaaaaa视频| 亚洲免费观看高清完整版在线观看| 亚洲精品久久久久久一区二区 | 欧美在线看片a免费观看| 一本综合久久| 欧美成人一区在线| 久久色中文字幕| 国产精品视频大全| 亚洲一区二区三区精品视频| 午夜精品国产更新| 国产精品日韩一区| 亚洲视频电影图片偷拍一区| 亚洲视频在线观看一区| 欧美三级在线| 久久国产精品一区二区| 在线观看成人av| 久久av红桃一区二区小说| 欧美一区二区三区喷汁尤物| 欧美日韩一本到| 欧美影院精品一区| 欧美风情在线观看| 久久综合九色综合欧美就去吻| 国产午夜精品麻豆| 亚洲精品国精品久久99热一| 久久国产欧美| 一区二区精品在线| 国产精品久久久久一区| 久久精品青青大伊人av| 亚洲人体偷拍| 亚洲综合色激情五月| 狠狠色狠狠色综合日日91app| 美女主播视频一区| 91久久在线播放| 欧美成人综合一区| 欧美18av| 欧美.日韩.国产.一区.二区| 日韩午夜一区| 蜜桃av噜噜一区二区三区| 欧美一区二区三区久久精品茉莉花| 99精品国产高清一区二区| 欧美视频福利| 亚洲一级片在线观看| 久久网站热最新地址| 激情久久五月天| 午夜在线精品偷拍| 久久先锋资源| 亚洲欧美日韩爽爽影院| 亚洲乱码精品一二三四区日韩在线 | 亚洲欧美日韩天堂一区二区| 久久亚洲精品一区二区| 亚洲伊人一本大道中文字幕| 狠狠操狠狠色综合网| 欧美片第一页| 欧美一区二区视频97| 亚洲视频1区| 亚洲精品视频一区二区三区| 日韩亚洲精品电影| 小黄鸭视频精品导航| 麻豆国产精品va在线观看不卡| 欧美激情1区2区| 久久夜精品va视频免费观看| 亚洲美女视频在线观看| 国产精品日本一区二区|