·C語言中變量的聲明包括兩個部分:類型,聲明符
·對於簡單類型,聲明並不會對代碼產生多大的閱讀障礙,而對於複雜類型的識別,能夠採用右左右左法進行判斷linux
·指針數組:即用於存儲指針的數組,也就是數組元素都是指針int a[10]
·數組指針:即指向駐足的指針,指針指向一個類型和元素個數都固定的數組int (a)[10]
·指針函數:即返回值是指針類型的函數int fuk()
·函數指針:即指向函數的指針,函數名就是函數指針int (fuk1)()
對於簡單類型,聲明並不會對代碼產生多大的閱讀障礙,而對於複雜類型的識別,能夠採用右左右左法進行判斷git
從變量名開始,先右再左地,交替地一個一個向外看,在紙上寫下:「變量是」
若向右遇到左圓括號,在紙上寫下:「函數,參數是」,並用一樣的方法處理括號中每個參數——在紙上寫下:「返回」
若向右遇到方括號,在紙上寫下:「數組,長度爲{方括號的內容},元素類型爲」
若向右遇到右圓括號,什麼也不作
若向左遇到*,在紙上寫下:「指針,指向」
若向左遇到任何類型,在紙上寫下對應的類型名shell
·由用戶產生,如:Ctrl+C產生SIGINT信號等,能夠經過stty -a查看哪些按鍵能夠產生信號
·由硬件產生,如:當前進程執行了除以0的指令
·由進程發送,如:可在shell進程下,使用命令 kill -信號標號 PID,向指定進程發送信號。
·由內核產生,如:鬧鐘超時產生SIGALRM信號。
SIG_IGN是忽略信號的處理程序,表示無返回值的函數指針,指針值爲1
SIG_DFL是默認信號的處理程序,表示無返回值的函數指針,指針值爲0
能夠經過stty -a查看能夠產生信號的按鍵組合:
數組
·signal:
·不知道信號被髮送的緣由
·信號處理過程當中不能安全地阻塞其餘信號
·sigaction:
·在信號處理程序被調用時,系統創建的新信號屏蔽字會自動包括正被遞送的信號。所以保證了在處理一個給定的信號時,若是這種信號再次發生,那麼它會被阻塞到對前一個信號的處理結束爲止
·響應函數設置後就一直有效,不會重置安全
·信號是由操做系統來處理的,說明信號的處理在內核態。信號不必定會當即被處理,此時會儲存在信號的信號表中。
·信號的三種處理方式:函數
·忽略 ·默認處理方式:操做系統設定的默認處理方式 ·自定義信號處理方式:可自定義信號處理函數
利用命令man -k signal進行檢索相關函數:
學習
sigdemo1.c運行結果以下圖所示:
操作系統
signal(SIGINT,f)演示瞭如何捕捉信號,這個程序捕捉了中斷信號
void f(int signum)演示瞭如何定義信號處理函數.net
·sigdemo2.c運行結果以下圖所示:
·經過grep命令查看SIG_IGN,表示無返回值的函數指針,指針值爲1
·SIG_DFL是默認信號的處理程序
·經過grep命令查看SIG_DFL,表示無返回值的函數指針,指針值爲0
·sigdemo3.c運行結果以下圖所示:
將sigdemo2.c中的SIG_IGN改爲SIG_DFL,運行sigdemo4.c:
SIG_IGN是忽略信號,也就是當鍵盤輸入一個Ctrl+C中斷指令時,程序會將其忽略,而改爲SIG_DFL後,恢復成了默認的狀態,輸入中斷指令後,天然程序也就中斷了
代碼行數統計:
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | |
---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 |
第零周 | 0/0 | 1/1 | 10/10 |
第一週 | 100/100 | 1/2 | 20/20 |
第二週 | 120/220 | 1/3 | 35/55 |
第三週 | 226/446 | 1/4 | 30/85 |
第五週 | 141/587 | 1/5 | 30/115 |
第六週 | 150/737 | 1/6 | 25/140 |
第七週 | 100/837 | 1/7 | 20/160 |
第八週 | 0/837 | 2/9 | 30/190 |
第九周 | 183/1020 | 2/11 | 20/210 |
第十週 | 521/1541 | 3/14 | 20/230 |
第十一週 | 426/1967 | 1/15 | 35/265 |
第十二週 | 41/2008 | 3/18 | 50/315 |