




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
bylinux信號基本概異步事件的響應:進程執行代碼的過可以隨時被打斷,然后去執行異常處理程序鬧鐘發出中斷信號,把書合好(第20頁),去廚房把開水事情處理好,重新打20cpu中斷可以(可以。CPU運行程序錯誤或執行內部程序調用引起的一種中斷,也稱為軟件x86INTARMUNIX信號是因為某些錯誤條件而產生的,比如內存段、浮點處理器錯誤或者(2)信號處理程序是在用戶態下運行的,而中斷處理程序是在態下信號名 描SIGABRT6SIGALRM警告鐘 SIGHUP 指 終端中斷 SIGPIPE向沒有讀者的管道寫入數據SIGSEGVSIGQUIT終端退出 SIGTERM終止SIGUSR1SIGUSR2SIGCHLD子進程已經停止或退出SIGCONT如果被停止則繼續執行SIGSTOP停止執行SIGTSTPSIGTOUT進程請求進行寫操SIGTTIN進程請求進行讀操kill Man7signal1SIGKILL、SIGSTOP(2個信信號的默認操作:通過man7signal進程查看man7編程實踐:讓應用程序捕捉ctrl+cctrl+cctrl+csignalsignalsignal函數,作用1:站在應用程序的角度,一個信號處理函數。2:忽略信號、設置信號默認處理信號的安裝和恢復typedefvoid(*sighandler_t)#defineSIG_ERR((sighandler_t)-#defineSIG_DFL((sighandler_t)#defineSIG_IGN((sighandler_t)函數原型sighandler_tsignal(intsignum,sighandler_tsignumhandler給handlerint類型的參數(即接收到的信號代碼,它void 該信 編程實踐SIGINT、intmain(void){sighandler_t//sighandler_t*oldHandle; oldHandle=signal(SIGINT,myhandle);if(oldHandle==SIG_ERR){perror("funcsignalerr\n");return0;}printf("ifuentera,resetsignal\n");while(getchar()!='a'){;}//aif(signal(SIGINT,oldHandle)=={perror("funcsignalerr\n");return0;}if(signal(SIGINT,SIG_DFL)=={perror("funcsignalerr\n");return0;}while(1);return}注意:signalRETURNThesignal()functionreturnsthepreviousvalueofthesignalhandler,orSIG_ERR不可靠信號PKlinuxunixunix系統中的信號機制比較簡單和原始,后來在實踐中出一些問題,它的主要問題是:signal(),重新安裝該信號。unix下的不可靠信號主要指的是進程可能對信號做出錯誤的反應以linux上的實現。因此,linux下的不可靠信號問題主要指的是信號可能丟失。能丟失。linux1做了優化。號的發送和安裝也出現了新版本:信號發送函數sigqueue()及信號安裝函數總結:sigactionsignaldo_signal早期Unix系統只定義了32Rethat7.2支持640-32CTRL+CSIGINT信號,對該信號的默認反應就是進程終止。后32個信號表示實時信號,等同于前面闡述的可靠信POSIX標準的一部分,Man7signalkillKillkillIntkill(pid_tpid,intsiq)intraise(intsigno)Intkill(pid_tpidintsiq)kill(pid_tpid,intsiq)pid>0sigpidpid=0sigpid=-1將信號sig發送給所有進程,調用者進程限發送的每一個進程(除了1號pid<-1sigpid(絕對值)//(getpgrp()pid)結論:注意,如果在fork之前安裝信號,則子進程可以繼承信號。killsleepsleepsleepraise(),,,pauseschedule()linux進程調度pause使調用者進程掛起,直到一個信號alarmlinuxnSIGALRMalarm-setanalarmclockfordeliveryofasignal#includeunsignedintalarm(unsignedintseconds);alarm()arrangesforaSIGALRMsignaltobedeliveredtotheprocessinsecondsIfsecondsiszero,nonewalarm()isInanyeventanypreviouslysetalarm()is1alarmkill-ALRMkill-14kill-SIGALRMkill-alram`ps-aux|grep01aram|grep-vvi|awk'{print$2}' {printf("recvsignalidnum:%d\n",//kill-alram`ps-aux|grep01aram|grep-vvi|awk'{print$2}'`}int{ //信號處理函if(signal(SIGALRM,myhandle)=={perror("funcsignalerr\n");return0;}{}return}(1(2)(3)man))linux(Delivery(Pending(block11代表未決,0代表信號可以抵達了;說明3)向進程發送SIGINT,內核首先判斷狀態字是否阻塞,信號未決狀態(pending1;若阻塞解除,信號未決狀態字(pending)0;表示4)block狀態字、pending5)block狀態字用戶可以讀寫,pending狀態字用戶只能讀;這是信號設計機制。164bit,編程時,如何表示狀態字那?2:blockapi?3:pendingapi?#includeintsigemptyset(sigset_t*set);64bit/8=8intsigfillset(sigset_t*set);intsigaddset(sigset_t*setintsigno);signointsigdelset(sigset_t*setintsigno);signointsigismember(constsigset_t*set,intsigno);//signosigprocmask或更改進程的狀態字#includeintsigprocmask(inthow,constsigset_t*set,sigset_t功能:或更改進程的字如果oset是非空指針,則進程的當前字通過oset參數傳出。如果set是非空指針,則更改進程的字,參數how指示如何更改。如果oset和set都是非空指針,則先將原來的字備份到oset里,然后根據set和how參數更改字。假設當前的字為mask,下表說明了how參how說明:SIG_BLOCKsetblocksigpending-examinependingsignals#includeintsigpending(sigset_t*set); returnsthesetofsignalsthatarependingfordeliverytothecallingthread(i.e.,thesignalswhichhavebeenraisedwhile ThemaskofpendingsignalsreturnedinSIGINTSIGINT信號解除阻塞,查看未決關鍵字(通過ctrl+\SIGQUIT解除阻塞voidhandler(int{if(sig==printf("recvasig=%d\n",sig);elseif(sig==SIGQUIT){sigset_t//ctr+\用來接觸SIGINT//}}{intfor(i=1;i<NSIG;{if(sigismember(set,i))}}//3連續的按ctrl+cSIGINT信號,但是因為信號是不穩定的,只保//intmain(intargc,char{sigset_tpset;//if(signal(SIGINT,handler)==SIG_ERR)ERR_EXIT("signalerror");if(signal(SIGQUIT,handler)==SIG_ERR)ERR_EXIT("signalerror");//或更改進程的字這里用來阻塞ctrl+c信//ctrl+c信號被設置成阻塞,即使用戶按下ctl+cfor{////打印信號未決sigset_t}return}[wbm01@localhost~]$ps-uwbm01|grep"dm01"|awk'{print$1}'[wbm01@localhost~]$kill-9`ps-uwbm01|grep"dm01"|awk'{print$1}'linux()===sigaction函數信號處理函sigaction包含頭文件 sigaction(intsignum,conststructsigaction*act,conststructsigactionSIGKILLSIGSTOP外的任何(為這兩個信號定義自己的處理函數,將導致信號安裝錯誤sigactionsigaction的oldactoldactNULLsignal(num.,handle)sigaction處理函數執行過應掉哪些函數等等structsigactionvoid //void(*sa_sigaction)(int,siginfo_t*,void*);//信號處理程序能接受額外數據,和sigqueuesigset_tsa_mask;intsa_flagsSA_SIGINFO();//2:Thesigactionstructureisdefinedassomethinglike會查找、會用man手冊,是通往高手的必經Thesiginfo_tparametertosa_sigactionisastructwiththefollowing si_signo;/*Signalnumber*/ si_errno;/*Anerrnovalue*/ si_code;/*Signalcode*/ /*SendingprocessID /*RealuserIDofsendingprocess*/ si_status;/*Exitvalueorsignal*/ /*Usertimeconsumed*/ /*Systemtimeconsumed*/sigval_tsi_value; /*Signalvalue*/ si_int; /*POSIX.1bsignal*/void /*POSIX.1bsignalvoid* /*Memorylocationwhichcausedfault*/ si_band; /*Bandevent*/ /*Filedescriptor}voidhandler(int{printf("recvasig=%d\n",}sighandler_tmy_signal(intsig,sighandler_t{structsigactionact;structsigactionoldact;act.sa_handler=handler;act.sa_flags=0;if(sigaction(sig,&act,&oldact)<0)returnSIG_ERR;return}intmain(intargc,char{structsigactionact;sigset_tsa_mask;act.sa_handler=handler;act.sa_flags=0;//signalfor{}return}2sigactionsigset_tsa_maskstructsigactionvoidvoid(*sa_sigaction)(int,siginfo_t*,void*);sigset_tsa_mask;intvoid}//sigactionsigset_tsa_mask//sigaddset(&act.sa_mask,SIGQUIT);sa_mask(信號處理函intmain(intargc,char{structsigactionact;act.sa_handler=handler;act.sa_flags=0;if(sigaction(SIGINT,&act,NULL)<0)ERR_EXIT("si
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式系統開發常見技術問題試題及答案
- 財務稅務培訓專業指導考核試卷
- 液化石油氣行業環境保護與污染預防考核試卷
- 船舶節能技術與輪渡運輸能效管理考核試卷
- 人工智能助力嵌入式系統優化試題及答案
- 牙膏口味調配與消費者喜好研究考核試卷
- 嵌入式技術在教育中的應用試題及答案
- 生物質燃氣的供應鏈建設與物流管理策略考核試卷
- 數據共享與MySQL安全設置題目及答案
- 數據庫學習路徑試題及答案探討
- 2025年生態環境保護知識測試題及答案
- 2025年山東省聊城市高唐縣中考二模英語試題(原卷版+解析版)
- 企業數字化轉型培訓課件
- 2025屆高考語文押題作文及題目(9篇)
- 2025年中國白楊樹市場現狀分析及前景預測報告
- 2025年湖北省新高考信息卷(三)物理試題及答題
- 2025年廣東省中考地理模擬試卷(含答案)
- 2024年四川省樂山市中考地理試卷 附答案
- 鏈輪齒數尺寸對照表二
- 模塊化低壓配電柜MODAN6000樣本_圖文
- 國有資產管理情況整改報告
評論
0/150
提交評論