通訊架構學習 nginx 四 訊號的基本概念

2021-10-02 14:52:31 字數 1022 閱讀 5953

訊號的基本概念:

程序間常用的通訊手段:傳送訊號, kill..

sighup

訊號:通知, 事件通知, 用來通知某個程序發生了乙個事情

事件, 訊號都是突發的, 訊號是非同步發生的,也叫軟體中斷

訊號的產生:

a)某個程序傳送給另乙個程序或者傳送給自己

b)由核心傳送給某個程序

1)在鍵盤上輸入命令ctrl+c 中斷訊號, kill命令

2)記憶體訪問異常,除數為0, 硬體都會檢測到並且通知核心

訊號的名字:一般以sig開頭 例如:sighup(終端斷開訊號)

unix以及類unix作業系統:支援的訊號各不相同10-60個之間;

訊號既有名字, 也是一些數字, 訊號是一些正整數常量

#include(/usr/include)

gcc搜尋路徑:

標頭檔案, 包含路徑:/user/local/include/ /usr/include/

庫檔案, 連線路徑: /usr/local/lib/ /usr/lib

// sudo   find    /    -name    "signal"    |    xargs     grep       -in        "sighup

根目錄        要找的東西   給其他命令傳參    忽略大小寫,顯示行號

用了xargs就是在「signal」內容中搜尋

kill : kill 程序id(他的工作是發個訊號給程序)可以給程序傳送多種訊號;

kill -1 程序id  (1其實就是sighup)

程序的狀態:加上stat 

ps -eo pid,ppid,sid,tty,pgrp,comm,stat | grep -e 'bash|pid|nginx' 

訊號處理常見動作:

(1)執行系統預設動作, 絕大多數預設動作都是殺死這個程序

(2)忽略此訊號 sig_ing:signal(sighup, sig_ign);

(3)捕捉該訊號:寫個處理函式,訊號來的時候,用該函式進行處理

通訊架構學習 nginx 六 訊號集相關知識

訊號集 乙個程序必須能夠記住它當前阻塞了哪些訊號 0000001000000000000000 標誌位 我們需要被稱為訊號集的資料型別 能把60多個訊號都表示下。linux中用sigset t結構型別來表示訊號集 64位 typedef structsigset t 訊號集相關函式 a sigemp...

(C 通訊架構學習筆記) 守護程序及訊號處理實戰

目錄 守護程序功能的實現 訊號處理函式的進一步完善 ngx daemon 函式 int ngx daemon ngx parent ngx pid ngx pid getpid if setsid 1 umask 0 int fd open dev null o rdwr if fd 1 if du...

nginx學習筆記(二)訊號控制nginx

nginx學習筆記 二 訊號控制nginx int quit ps aux grep nginx或者ps ef hrep nginx檢視nginx的程序資訊,nginx master 主程序,管理子程序的 sudo kill int nginx master的程序號殺掉nginx程序 暴力 sudo...