電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 29|回復(fù): 0
收起左側(cè)

嵌入式Linux:常見信號(hào)的默認(rèn)行為

[復(fù)制鏈接]

563

主題

563

帖子

3385

積分

四級(jí)會(huì)員

Rank: 4

積分
3385
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-8-23 12:03:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式

& T1 R, b+ T1 M3 |: g( R" t點(diǎn)擊上方藍(lán)色字體,關(guān)注我們9 k7 v9 S- k* ~# ^- _8 f! l: q, k
信號(hào)是一種軟件中斷,用于通知進(jìn)程發(fā)生了某種異步事件。信號(hào)可以由用戶、其他進(jìn)程或操作系統(tǒng)內(nèi)核產(chǎn)生。進(jìn)程可以選擇捕獲并處理這些信號(hào),或者忽略它們,讓系統(tǒng)執(zhí)行默認(rèn)操作。1 _% v: D" k# ~% }7 ]

2 C; i! G1 s. U3 I0 t1 @
2 h' P) J4 f( Q6 J; w& g
; @" I) o9 r" B$ E4 y0 k+ Q
  • 不可靠信號(hào)(非實(shí)時(shí)信號(hào)):編號(hào)為 1~31 的信號(hào)。它們的行為可能因?qū)崿F(xiàn)而異,特別是在信號(hào)被阻塞或忽略的情況下。如果多個(gè)相同的不可靠信號(hào)在短時(shí)間內(nèi)連續(xù)到達(dá),它們可能會(huì)合并成一個(gè)信號(hào)。
  • 可靠信號(hào)(實(shí)時(shí)信號(hào)):編號(hào)為 34~64 的信號(hào)。它們的行為在所有 POSIX 兼容的系統(tǒng)上都是相同的。可靠信號(hào)不會(huì)合并,即使它們?cè)诙虝r(shí)間內(nèi)連續(xù)到達(dá)?煽啃盘(hào)支持排隊(duì),這意味著如果一個(gè)可靠信號(hào)被阻塞,它將被存儲(chǔ)在隊(duì)列中,直到信號(hào)處理程序準(zhǔn)備就緒。; E" I& `0 N3 ^$ C

    : n$ S5 u" L: q6 p0 U2 G常見信號(hào)的用途和系統(tǒng)默認(rèn)操作如下:
    0 Q2 o+ Z$ E$ |2 f
    4 U" z- Y* g3 A! h$ R
    " |2 s: j' Z; s4 W: |: B# L" t; m. `
    1 f; w% f! \! q, F. u$ `SIGINT (2)
    + L/ F+ Q" V9 o9 a7 W
  • 觸發(fā)方式:當(dāng)用戶在終端按下中斷字符(通常是CTRL+C)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于中斷正在運(yùn)行的前臺(tái)進(jìn)程,是常用的終止命令。% k* B2 Q" {( Y- T
    0 y2 Q/ w3 T9 V# U( I, m: c. u
    4 c. K+ h$ w: P3 K7 j
    SIGQUIT (3), g( m4 O3 E; {9 s: n. a, h
  • 觸發(fā)方式:當(dāng)用戶在終端按下退出字符(通常是CTRL+\)。
  • 默認(rèn)操作:終止進(jìn)程并生成核心轉(zhuǎn)儲(chǔ)文件。
  • 描述:用于在程序進(jìn)入無限循環(huán)或不響應(yīng)時(shí)終止進(jìn)程,并生成調(diào)試用的核心文件。
    5 G/ w1 N3 w1 t- [8 X' [& l
    - {% ]7 O3 D! h6 M1 ?2 o2 G
    . n, u( t4 X2 _( J
    SIGILL (4)
    # {0 L/ a& S% u
  • 觸發(fā)方式:進(jìn)程嘗試執(zhí)行非法的機(jī)器語言指令。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于指示程序執(zhí)行了無效的操作碼,通常表示程序代碼損壞或內(nèi)存越界。
    " j; m3 Y( ^! }

    6 z: T  u0 N" }' U' e
    0 P. w2 A1 g, K$ X! E5 {7 O( H5 W
    SIGABRT (6)8 I$ c! U6 k% _! [' k7 y' y/ F( C' q) n
  • 觸發(fā)方式:當(dāng)進(jìn)程調(diào)用abort()系統(tǒng)調(diào)用。
  • 默認(rèn)操作:終止進(jìn)程并生成核心轉(zhuǎn)儲(chǔ)文件。
  • 描述:用于指示進(jìn)程自身發(fā)現(xiàn)了嚴(yán)重錯(cuò)誤,并請(qǐng)求自我終止。
    9 T5 D* k4 |3 q

    4 j! H' a, p8 `2 _3 z+ F

    * N3 S% p1 A8 v& FSIGBUS (7)) Z. z7 x+ A0 d. ?: E  R# X
  • 觸發(fā)方式:發(fā)生總線錯(cuò)誤(例如錯(cuò)誤的內(nèi)存訪問)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:指示內(nèi)存訪問沖突,通常與硬件有關(guān)。, {- U: Q; D" \7 e

    + r' f1 a5 X& Q- K

    " _/ [9 d/ P- S6 u/ {' s# N7 D8 S/ lSIGFPE (8)
    2 x- t7 E, Z% t
  • 觸發(fā)方式:特定類型的算術(shù)錯(cuò)誤(例如除以零)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于表示浮點(diǎn)運(yùn)算錯(cuò)誤或其他算術(shù)異常。
    & Y6 q1 S7 h$ X$ G; x

    * I6 A. d+ `6 V: s

    ( N$ W3 C2 m5 n! Q$ q. gSIGKILL (9)) H) H/ ]% L9 V( q% O0 }% d. u
  • 觸發(fā)方式:通過kill -9命令或系統(tǒng)直接發(fā)送。
  • 默認(rèn)操作:立即終止進(jìn)程。
  • 描述:是無法被捕獲或忽略的“必殺”信號(hào),用于強(qiáng)制終止進(jìn)程。
    ; L% ~& h" O' U

    % H0 C( W- ~3 q4 f

    2 ^/ I$ s( a5 r" A$ t* ]/ m) RSIGUSR1 (10)
    7 }+ h$ k8 L. ]5 L$ H9 ^
  • 觸發(fā)方式:用戶定義的信號(hào),供程序員自定義使用。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用戶程序可以使用此信號(hào)進(jìn)行進(jìn)程間通信或事件通知。5 T( D2 q* J# W' K$ T# R0 n, P

    6 |4 y' n7 z% h

    : b2 K% c7 c' U! C/ W0 lSIGSEGV (11)
    " J1 v% @" J9 s6 J' t0 `5 i
  • 觸發(fā)方式:進(jìn)程嘗試訪問無效的內(nèi)存地址。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:常見于指針錯(cuò)誤或無效內(nèi)存訪問操作,通常會(huì)導(dǎo)致程序崩潰。! d: N0 j2 p5 y
    1 _* M/ C/ W) ]* P4 x0 ~3 _

    9 g4 q# w( O* \: LSIGUSR2 (12)% U) W: E/ Y) [1 z0 h9 t' D
  • 觸發(fā)方式:與SIGUSR1類似,供用戶自定義使用。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:供程序員自定義,用于進(jìn)程間通信或自定義處理邏輯。, C  }+ Z# P& i- O" j# J: m

    : x! h5 {+ r, R! J/ N
    3 K( p) ~9 W( J* v/ s6 R
    SIGPIPE (13)) X4 }: ^/ L) ^/ B5 W7 ~1 j
  • 觸發(fā)方式:進(jìn)程向已關(guān)閉的管道或套接字寫入數(shù)據(jù)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:當(dāng)嘗試向無效的通信通道寫入數(shù)據(jù)時(shí)觸發(fā),通常用于通知進(jìn)程通信失敗。
    1 P; x  e& E9 ?" ?; r! ?1 S' ^( M

    ! A2 V  a; G! Y) s. X" a8 w. _
    ! R/ Q2 r7 N' v$ Q, U, F
    SIGALRM (14)6 k- \. w: T5 w
  • 觸發(fā)方式:定時(shí)器到期(由alarm()或setitimer()設(shè)置)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:常用于定時(shí)操作,信號(hào)觸發(fā)后通常終止程序或進(jìn)行某種處理。
    ' d4 J$ A6 {( [/ e9 I
    8 X9 N8 `, u, s7 w

    6 Q. R7 v4 \+ @2 Z( YSIGTERM (15)( I7 N9 `1 y, S
  • 觸發(fā)方式:通過kill命令(不帶-9選項(xiàng))。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于請(qǐng)求進(jìn)程正常終止,通常用于優(yōu)雅地關(guān)閉應(yīng)用程序。
    9 o5 \! Z1 q7 m+ C  |7 Q  R
    ' R* ?  n' c  O  w7 M& S5 ?

    0 I9 z" i1 i+ s% K9 [SIGCHLD (17)
    ' y6 L7 g$ Q; V. a/ P
  • 觸發(fā)方式:子進(jìn)程終止或狀態(tài)改變。
  • 默認(rèn)操作:忽略信號(hào)。
  • 描述:父進(jìn)程用來得知子進(jìn)程終止或狀態(tài)改變,默認(rèn)忽略,父進(jìn)程可選擇處理。0 D6 ~, D! d/ m6 G+ d  S) {1 }$ i
    ( \; c% q( T0 H* s( ^% [  F0 |9 ~
    4 R2 k1 r5 b" w( U
    SIGCONT (18)
      R9 |  v% [/ J; _3 B# x
  • 觸發(fā)方式:恢復(fù)已停止的進(jìn)程。
  • 默認(rèn)操作:繼續(xù)運(yùn)行進(jìn)程。
  • 描述:發(fā)送給已停止的進(jìn)程,使其恢復(fù)執(zhí)行。
    8 C9 S( x5 C4 K1 W7 D5 d

    . j  \+ A3 w7 G0 ~( J
    1 ^6 P! R1 B' U! _
    SIGSTOP (19)
    # _4 W+ `/ S$ F; v, K8 T
  • 觸發(fā)方式:強(qiáng)制停止進(jìn)程。
  • 默認(rèn)操作:停止進(jìn)程。
  • 描述:無法捕獲或忽略的“必!毙盘(hào),用于暫停進(jìn)程執(zhí)行。
    , m+ S/ T6 i' M0 i" H3 `

    / [- B) b. P: t5 S$ G
    0 K# S- u, y" o- A% i  h
    SIGTSTP (20)# k) C1 }7 G& T
  • 觸發(fā)方式:用戶在終端按下停止字符(CTRL+Z)。
  • 默認(rèn)操作:停止進(jìn)程。
  • 描述:用于暫停前臺(tái)進(jìn)程組中的進(jìn)程,常用于暫停任務(wù)。
    9 s0 [0 u1 L( x5 V% k! L

    6 R" n- X- L  r2 p# z9 C! E

    - M2 Y9 T, s8 {SIGXCPU (24)+ o0 P, i5 F: t
  • 觸發(fā)方式:進(jìn)程CPU時(shí)間超出限制。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:通常用于檢測(cè)進(jìn)程占用CPU過多時(shí)間,可能引發(fā)警告或終止進(jìn)程。6 J5 j/ {) T" k9 M
    $ S+ c0 P* ~7 Q7 ]  n: I5 [6 T

    / H1 u1 A5 e) c2 }4 eSIGVTALRM (26)+ l/ n, {0 u0 f$ t1 m( J4 s
  • 觸發(fā)方式:虛擬定時(shí)器到期(由setitimer()設(shè)置)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于虛擬定時(shí)器管理,定時(shí)器到期后觸發(fā)信號(hào)。' R. m- U# n- s  a

    ) I, f! [% @* l7 I1 J8 ISIGWINCH (28)
    ! K3 A1 P/ v* o1 a5 @, J
  • 觸發(fā)方式:終端窗口大小改變。
  • 默認(rèn)操作:忽略信號(hào)。
  • 描述:當(dāng)終端窗口調(diào)整大小時(shí),前臺(tái)進(jìn)程會(huì)接收到此信號(hào)。" w  g$ P) k# [7 J

    3 J" \9 A: Q7 D7 u. k# S

    & H( m6 i2 I8 x# WSIGPOLL/SIGIO (29)
    ; Q# G5 t6 Z+ G; g
  • 觸發(fā)方式:異步I/O事件發(fā)生。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于異步I/O操作,通知進(jìn)程文件描述符的I/O事件。9 j- J+ j$ u/ E6 _9 Q) O$ B; k/ u

      G2 Q# S  z1 L/ U2 a! I5 mSIGSYS (31)
    ! _4 l7 \  [* M4 N6 T- ~8 d. g
  • 觸發(fā)方式:進(jìn)程發(fā)起了無效的系統(tǒng)調(diào)用。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:通常用于捕獲非法系統(tǒng)調(diào)用或程序錯(cuò)誤。
    - q: Z4 b: u, Q4 H3 k$ O: ?9 q
    6 m# C# m! X' X/ B/ j8 d
    這些信號(hào)為L(zhǎng)inux進(jìn)程提供了豐富的控制和通信機(jī)制。了解這些信號(hào)及其默認(rèn)行為,有助于編寫更加健壯的程序,并能夠有效處理各種異常和中斷。: Y& D# j. ~' d3 Y1 s

    7 D- r, N' p' v- x9 `( O( q
    6 H3 A$ l/ i, E6 b & p- F- c! l3 H8 G) ]* n" l9 p
    點(diǎn)擊閱讀原文,更精彩~
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表