深入學習訊號的文章

2021-08-07 15:36:43 字數 909 閱讀 5372

1. 學習完unix環境高階程式設計,發現只是會簡單的使用api

如果還想進一步了解相應的原理,需要一點核心知識,

linux signal那些事兒

1)訊號處理期間,可以遮蔽自身的訊號不被中斷,但是可以被其他訊號中斷

因此需要加上相應的遮蔽碼才能工作。

2)可靠和不可靠指的是數值的大小[0-31]之間的就是可靠的,

不可靠指的是可能會丟失訊號

3)系統呼叫可能被中斷,不過新的signal不會,因為中斷之後,如果是可重入函式的話

就會再呼叫一次,原理就是kernel在signal處理的時候,包含了

sa_restart這個標誌位。

linux signal 那些事兒(2)

1)kill -l 可以檢視訊號量的值,比如kill -9 pid就是發乙個sigkill命令,killall test(程序名字)就是發乙個sigterm命令

給相應的程序。

3)在除錯中,除了dbg工具,還有常見的命令strace命令

來自: 

4)signal pending有上限,並不能無限制的發,通過ulimit -a檢視

linux signal 那些事兒 (3)

linux signal 那些事兒(4)訊號的deliver順序

如果同時有多個不同的訊號處於掛起狀態,kernel如何選擇deliver那個訊號。

1. 所有訊號分成三個等級,,

這是第一等級,

2. 傳統訊號中排除第一等級的訊號,就是第二等級的訊號.

3. [34,64

]之間的訊號屬於第三等級。

如果同一等級內,存在多個訊號,按照小訊號優先的順序去deliver。

第二:關於跟蹤核心的訊號情況,可以使用乙個systemtap看效果,這裡面介紹比較清楚,

見下面的**

陣列的深入學習

在以前的學習中,對陣列的認識只是簡單的陣列形式,儲存數,但深入學習其實現機理,發現大有文章,下面簡單表述一下 一 陣列是乙個型別,這個從陣列的定義說起 陣列的定義有兩種方式 以int為例,1.int a 2.int a 第一種定義方法是很多人習慣的,主要是早期的影響,第二種方法才是最適合的定義方法,...

margin的深入學習

簡單地說,外邊距合併指的是,當兩個垂直外邊距相遇時,它們將形成乙個外邊距。合併後的外邊距的高度等於兩個發生合併的外邊距的高度中的較大者。實際工作中,垂直外邊距合併問題常見於第乙個子元素的margin top會頂開父元素與父元素相鄰元素的間距,而且只在標準瀏覽器下 firffox chrome ope...

Vuex的深入學習

一 狀態管理vuex 1.vuex使用 vuex是乙個專為vue.js應用程式開發的狀態管理模式。它採用集中式儲存管理應用的所有元件的狀態,並以對應的規則保證狀態以一種可 的方式發生變化。1 state 單一狀態書,每個應用將僅僅包含乙個store例項 this.store.state.狀態名字 m...