訊號捕獲trap及其例項應用

2022-09-23 02:09:11 字數 2351 閱讀 1670

編號

訊號名稱

預設動作

描述sighup

終止終止程序,掛起

sigint

終止鍵盤輸入中斷命令,一般是ctrl+c

sigquit

coredump

鍵盤輸入退出命令,一般是ctrl+\

sigill

coredump

非法指令

sigtrap

coredump

trap指令發出,一般除錯用

sigabrt

coredump

abort(3)發出的終止訊號

sigbus

coredump

非法位址

sigfpe

coredump

浮點數異常

sigkill

終止立即停止程序,不能捕獲,不能忽略

sigusr1

終止使用者自定義訊號1,像nginx就支援usr1訊號,用於過載配置,重新開啟日誌

sigse**

coredump

無效記憶體引用

sigusr2

終止使用者自定義訊號2

sigpipe

終止管道不能訪問

sigalrm

終止時鐘訊號,alrm(2)發出的終止訊號

sigterm

終止終止訊號,程序會先關閉正在執行的任務或開啟的檔案再終止,有時間程序在有執行的任務而忽略此訊號。不能捕捉

sigstkflt

終止處理器棧錯誤

sigchld

可忽略子程序結束時,父程序收到的訊號

sigcont

可忽略讓終止的程序繼續執行

sigstop

停止停止程序,不能忽略,不能捕獲

sigstp

停止停止程序,一般是ctrl+z

sigttin

停止後台程序從終端讀資料

sigttou

停止後台程序從終端寫資料

sigurg

可忽略緊急陣列是否到達socket

sigxcpu

coredump

超出cpu占用資源限制

sigxfsz

coredump

超出檔案大小資源限制

si**talrm

終止虛擬時鐘訊號,類似於sigalrm,但計算的是程序占用的時間

sigprof

終止類似與sigalrm,但計算的是程序占用cpu的時間

sigwinch

可忽略視窗大小改變發出的訊號

sigio

終止檔案描述符準備就緒,可以輸入/輸出操作了

sigpwr

終止電源失敗

sigsys

coredump

非法系統呼叫

注意:9 訊號,捕獲不住,也無法忽略。

1.2、linux支援的兩種訊號型別

1、標準訊號,編號1-31,稱為非可靠訊號(非實時),不支援佇列,訊號可能會丟失,比如傳送多次相同的訊號,程序只能收到一次,如果第乙個訊號沒有處理完,第二個訊號將會丟棄。

2、擴充套件訊號,編號32-64,稱為可靠訊號(實時),支援佇列,發多少次程序就可以收到多少次。

1.3、傳送訊號的兩種情況

trap ' 觸發指令' 訊號

自定義程序收到系統發出的指定訊號後,將執行觸發指令,而不會執行原操作

trap '' 訊號

忽略訊號的操作

trap '-' 訊號

恢復原訊號的操作

trap -p

列出自定義訊號操作

訊號可以3種表達方法:訊號的數字2、全名sigint、縮寫int

3、trap例項應用例1:列印0-9,ctrl+c不能終止

#!/bin/bash

trap 'echo press ctrl+c' 2

for ((i=0;i<10;i++));do

sleep 1

echo $i

done

分析:i=0,當i<10,每休眠1秒,i+1,捕獲2訊號(也就是鍵盤ctrl+c),並把echo後面的內容輸入到終端螢幕。

例2:列印0-5,ctrl+c不能終止,5之後恢復,能終止

#!/bin/bash

trap '' 2

trap -p

for ((i=0;i<5;i++));do

sleep 1

echo $i

done

trap '-' sigint

for ((i=5;i<20;i++));do

sleep 1

echo $i

done

分析:i=0,當i<5,每休眠1秒,i+1,捕獲2訊號;i>5時,解除捕獲2訊號。

frame框架及其例項

框架概念 謂框架便是網頁畫面分成幾個框窗,同時取得多個 url。只需要 即可,面所有框架標記需要放在乙個總起的 html 檔,這個檔案只記錄了該框架如何分割 不會顯示任何資料,所以不必放入 標記,瀏覽這框架必須讀取這檔案 面不是其他框窗的檔案。是用來劃分框窗,每一窗框由乙個 標 記所標示,必須在 範...

黑盒測試及其例項

一 黑盒測試 黑盒測試是指對程式功能性的測試,也就是不考慮內部的具體實現,僅僅就程式的功能是否滿足需求進行測試,相當於乙個看不見內部的黑盒子。二 黑盒測試的作用 黑盒測試主要是注重功能的測試,包括 功能的完整性,正確性測試 介面錯誤 輸入和輸出錯誤 資料庫訪問錯誤 效能錯誤 初始化和停止錯誤等等 三...

Java abstract關鍵字及其例項

package c abstract關鍵字用於修飾方法和類,分別稱為抽象方法和抽象類 採用abstract關鍵字修飾的方法稱為抽象方法,這種方法只有方法宣告,而沒有方法體及具體實現的步驟 抽象方法只能在抽象類中定義,並且抽象方法中不能用static final private修飾符,抽象方法只有在子...