日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell 信号发送与捕捉

發布時間:2025/3/8 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell 信号发送与捕捉 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Linux信號類型

信號(Signal):信號是在軟件層次上對中斷機制的一種模擬,通過給一個進程發送信號,執行相應的處理函數。

進程可以通過三種方式來響應一個信號:

1)忽略信號,即對信號不做任何處理,其中有兩個信號不能忽略:SIGKILL及SIGSTOP。

2)捕捉信號。

3)執行缺省操作,Linux對每種信號都規定了默認操作。

Linux究竟采用上述三種方式的哪一個來響應信號呢?取決于傳遞給響應的API函數。

Linux支持的信號有:

編號

信號名稱

缺省動作

描述

1

SIGHUP

終止

終止進程,掛起

2

SIGINT

終止

鍵盤輸入中斷命令,一般是CTRL+C

3

SIGQUIT

CoreDump

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

4

SIGILL

CoreDump

非法指令

5

SIGTRAP

CoreDump

trap指令發出,一般調試用

6

SIGABRT

CoreDump

abort(3)發出的終止信號

7

SIGBUS

CoreDump

非法地址

8

SIGFPE

CoreDump

浮點數異常

9

SIGKILL

終止

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

10

SIGUSR1

終止

用戶自定義信號1,像Nginx就支持USR1信號,用于重載配置,重新打開日志

11

SIGSEGV

CoreDump

無效內存引用

12

SIGUSR2

終止

用戶自定義信號2

13

SIGPIPE

終止

管道不能訪問

14

SIGALRM

終止

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

15

SIGTERM

終止

終止信號,進程會先關閉正在運行的任務或打開的文件再終止,有時間進程在有運行的任務而忽略此信號。不能捕捉

16

SIGSTKFLT

終止

處理器棧錯誤

17

SIGCHLD

可忽略

子進程結束時,父進程收到的信號

18

SIGCONT

可忽略

讓終止的進程繼續執行

19

SIGSTOP

停止

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

20

SIGSTP

停止

停止進程,一般是CTRL+Z

21

SIGTTIN

停止

后臺進程從終端讀數據

22

SIGTTOU

停止

后臺進程從終端寫數據

23

SIGURG

可忽略

緊急數組是否到達socket

24

SIGXCPU

CoreDump

超出CPU占用資源限制

25

SIGXFSZ

CoreDump

超出文件大小資源限制

26

SIGVTALRM

終止

虛擬時鐘信號,類似于SIGALRM,但計算的是進程占用的時間

27

SIGPROF

終止

類似與SIGALRM,但計算的是進程占用CPU的時間

28

SIGWINCH

可忽略

窗口大小改變發出的信號

29

SIGIO

終止

文件描述符準備就緒,可以輸入/輸出操作了

30

SIGPWR

終止

電源失敗

31

SIGSYS

CoreDump

非法系統調用

CoreDump(核心轉儲):當程序運行過程中異常退出時,內核把當前程序在內存狀況存儲在一個core文件中,以便調試。

?

Linux支持兩種信號:

一種是標準信號,編號1-31,稱為非可靠信號(非實時),不支持隊列,信號可能會丟失,比如發送多次相同的信號,進程只能收到一次,如果第一個信號沒有處理完,第二個信號將會丟棄。

另一種是擴展信號,編號32-64,稱為可靠信號(實時),支持隊列,發多少次進程就可以收到多少次。

信號類型比較多,我們只要了解下,記住幾個常用信號就行了,紅色標記的我覺得需要記下。

?

發送信號一般有兩種情況:

一種是內核檢測到系統事件,比如鍵盤輸入CTRL+C會發送SIGINT信號。

另一種是通過系統調用kill命令來向一個進程發送信號。

2、kill命令

kill命令發送信號給進程。

命令格式:kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...

kill -l [sigspec]

-s ?# 信號名稱

-n ?# 信號編號

-l ?# 打印編號1-31信號名稱

總結

以上是生活随笔為你收集整理的Shell 信号发送与捕捉的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。