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

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

搜索
查看: 25|回復(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覽 |閱讀模式

4 ~9 F# H. o0 {" i: z0 d1 A點(diǎn)擊上方藍(lán)色字體,關(guān)注我們
% n" y# B1 z4 k5 b. s) F6 j, W信號(hào)是一種軟件中斷,用于通知進(jìn)程發(fā)生了某種異步事件。信號(hào)可以由用戶、其他進(jìn)程或操作系統(tǒng)內(nèi)核產(chǎn)生。進(jìn)程可以選擇捕獲并處理這些信號(hào),或者忽略它們,讓系統(tǒng)執(zhí)行默認(rèn)操作。
* q5 p& i- i5 M1 N% T; i) d% p0 \9 P; L
8 D: T; N; P- p! Z) s$ S

. Q  e6 _3 M* r1 x7 _
  • 不可靠信號(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)備就緒。
    7 W0 F9 w! p$ P' J6 L- Z

    2 L6 K8 J9 G/ a  K& @2 Z8 x2 R常見信號(hào)的用途和系統(tǒng)默認(rèn)操作如下:& V" w+ `2 b& O: o% \. _7 \5 S: P
    - n/ d3 J+ B" F! W
    + Q: A* L- `, J' h) f
    1 @3 L1 B* I$ `% S/ Y9 a
    SIGINT (2)
    . v2 S5 _& l: B* j/ I
  • 觸發(fā)方式:當(dāng)用戶在終端按下中斷字符(通常是CTRL+C)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于中斷正在運(yùn)行的前臺(tái)進(jìn)程,是常用的終止命令。
    # g9 \, V, ^6 S4 G' ~, h0 n

    & ?  N7 K5 c1 u4 f. A! O

    ( S- R" u5 }3 F9 A! D+ W6 `) x  uSIGQUIT (3)! a/ b' z: L1 D8 p: g: J  q
  • 觸發(fā)方式:當(dāng)用戶在終端按下退出字符(通常是CTRL+\)。
  • 默認(rèn)操作:終止進(jìn)程并生成核心轉(zhuǎn)儲(chǔ)文件。
  • 描述:用于在程序進(jìn)入無(wú)限循環(huán)或不響應(yīng)時(shí)終止進(jìn)程,并生成調(diào)試用的核心文件。! t1 K$ `3 Q  x

    + C1 x+ F( j3 u3 K
      ~8 N$ f( U7 G& ]
    SIGILL (4)2 q& x7 H3 y- i! y& q
  • 觸發(fā)方式:進(jìn)程嘗試執(zhí)行非法的機(jī)器語(yǔ)言指令。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于指示程序執(zhí)行了無(wú)效的操作碼,通常表示程序代碼損壞或內(nèi)存越界。
    ) a7 H, R2 A* u4 C6 K( d2 @& `

    " ^& ]7 ^: H% x- N, o6 _7 r1 t/ c
    * f* D( v0 }9 z$ b/ V
    SIGABRT (6)" V* P/ c9 |& b3 }% y
  • 觸發(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)求自我終止。
    5 L! Q9 A/ r* g( B

    1 m# y0 o7 j! a+ Z8 w
      n' T1 d8 S" J, |6 K- z
    SIGBUS (7)+ F$ Y: @( G" A: u
  • 觸發(fā)方式:發(fā)生總線錯(cuò)誤(例如錯(cuò)誤的內(nèi)存訪問)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:指示內(nèi)存訪問沖突,通常與硬件有關(guān)。
    % |# z5 \% T) u8 A1 z
    0 F- D- P/ B; u6 v# m

    9 S1 F% j$ Z% ^$ [SIGFPE (8)7 A4 w0 O2 A7 B
  • 觸發(fā)方式:特定類型的算術(shù)錯(cuò)誤(例如除以零)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于表示浮點(diǎn)運(yùn)算錯(cuò)誤或其他算術(shù)異常。
    ' H8 p' A: ~$ ^
    % A" _9 e! @/ d4 X( L, H* h

    - M. X7 j0 y" D+ F; g  Q/ |SIGKILL (9)
    ; O& C2 G" j9 {7 a: N
  • 觸發(fā)方式:通過(guò)kill -9命令或系統(tǒng)直接發(fā)送。
  • 默認(rèn)操作:立即終止進(jìn)程。
  • 描述:是無(wú)法被捕獲或忽略的“必殺”信號(hào),用于強(qiáng)制終止進(jìn)程。8 m) c' n* S$ A
    ) r9 C1 e3 K! v% y

    % J5 Y: s8 o2 \/ ^1 m2 [SIGUSR1 (10)
    - F% I; ^3 a; O9 N5 H
  • 觸發(fā)方式:用戶定義的信號(hào),供程序員自定義使用。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用戶程序可以使用此信號(hào)進(jìn)行進(jìn)程間通信或事件通知。6 ]" J. Y& Z" e: d

    , v2 {; r+ C6 Y/ R8 [
    5 A' e& F4 u/ F  ?! _+ @, y
    SIGSEGV (11)$ ]/ k+ U) ]  J# w8 w, |
  • 觸發(fā)方式:進(jìn)程嘗試訪問無(wú)效的內(nèi)存地址。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:常見于指針錯(cuò)誤或無(wú)效內(nèi)存訪問操作,通常會(huì)導(dǎo)致程序崩潰。
    , ?" ?0 A7 g$ Q4 J  |% ^

    & c7 b$ N3 i7 @2 W

    - T; n8 c( m. ~# [# i* |2 HSIGUSR2 (12)9 y; s, p/ M8 d: C
  • 觸發(fā)方式:與SIGUSR1類似,供用戶自定義使用。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:供程序員自定義,用于進(jìn)程間通信或自定義處理邏輯。. ~$ Q# _8 ]# h+ e
    1 `0 C! Y, h" m& l/ I) L/ ^

    9 L0 T# Z2 g: iSIGPIPE (13), G# P% b+ m- a8 _5 E, j, p/ O4 l
  • 觸發(fā)方式:進(jìn)程向已關(guān)閉的管道或套接字寫入數(shù)據(jù)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:當(dāng)嘗試向無(wú)效的通信通道寫入數(shù)據(jù)時(shí)觸發(fā),通常用于通知進(jìn)程通信失敗。9 u: v( \# W7 X* I* P1 v. j5 P
    ( ?1 A/ z8 D6 W. E8 l, k
    ' m( E; c+ u6 t# A
    SIGALRM (14)
    + i8 N5 ]2 }: [( m% u  r. Q, N
  • 觸發(fā)方式:定時(shí)器到期(由alarm()或setitimer()設(shè)置)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:常用于定時(shí)操作,信號(hào)觸發(fā)后通常終止程序或進(jìn)行某種處理。
    : O5 y' P& _' T  P/ u8 Z7 Y
    0 }- s1 {! i; W) d. s( s2 s; y. p

    ) I( E  q6 i0 W6 f, B+ VSIGTERM (15)
    ! g+ V' c6 ]* k6 V. L1 H9 ^
  • 觸發(fā)方式:通過(guò)kill命令(不帶-9選項(xiàng))。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于請(qǐng)求進(jìn)程正常終止,通常用于優(yōu)雅地關(guān)閉應(yīng)用程序。3 Y! S; f; L3 s' ?$ \

    , T/ K$ g2 S. B2 r/ E
    ; E% ?( R4 P$ I7 a7 l
    SIGCHLD (17)5 W  K/ T$ r& _9 n, Q( n
  • 觸發(fā)方式:子進(jìn)程終止或狀態(tài)改變。
  • 默認(rèn)操作:忽略信號(hào)。
  • 描述:父進(jìn)程用來(lái)得知子進(jìn)程終止或狀態(tài)改變,默認(rèn)忽略,父進(jìn)程可選擇處理。
    - n# Y1 C% c" C" {1 f
    ; B& Y* }* X* }7 {( k) S0 y0 U

    / s  k7 ~* m7 R* fSIGCONT (18)
    $ x3 S+ ?3 J$ V3 W6 y2 _
  • 觸發(fā)方式:恢復(fù)已停止的進(jìn)程。
  • 默認(rèn)操作:繼續(xù)運(yùn)行進(jìn)程。
  • 描述:發(fā)送給已停止的進(jìn)程,使其恢復(fù)執(zhí)行。
    , `' |6 h8 o5 u1 ~
    : i$ g6 r9 Z/ ^6 O& N. F0 X7 {  F4 I
    ( i; _5 u9 r% g6 ~& ?
    SIGSTOP (19)
    * {, A1 u" i$ {. y7 z$ H, w$ Z* I
  • 觸發(fā)方式:強(qiáng)制停止進(jìn)程。
  • 默認(rèn)操作:停止進(jìn)程。
  • 描述:無(wú)法捕獲或忽略的“必!毙盘(hào),用于暫停進(jìn)程執(zhí)行。& J) A- N3 C" z
    ( A" S; K& g5 [' ?9 k0 h4 x

    & m7 x8 _4 ~2 W2 ySIGTSTP (20)7 d; A- x3 ^. N) \2 I6 N% K3 n) @
  • 觸發(fā)方式:用戶在終端按下停止字符(CTRL+Z)。
  • 默認(rèn)操作:停止進(jìn)程。
  • 描述:用于暫停前臺(tái)進(jìn)程組中的進(jìn)程,常用于暫停任務(wù)。
    $ N- C" u0 \9 {# z

    . B$ q% L) ]$ v4 G

    # w$ D2 d, O% y2 m& @/ G4 n' ~  SSIGXCPU (24)
    ) d# \. ~5 L7 P  k& o* g
  • 觸發(fā)方式:進(jìn)程CPU時(shí)間超出限制。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:通常用于檢測(cè)進(jìn)程占用CPU過(guò)多時(shí)間,可能引發(fā)警告或終止進(jìn)程。
    * P5 \7 S6 u. Y& @
    8 k# |. M0 Y) B3 {% L0 E: R

    . m, z7 N  d+ Y# KSIGVTALRM (26)
    * L/ h; Y. ~# K. |
  • 觸發(fā)方式:虛擬定時(shí)器到期(由setitimer()設(shè)置)。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于虛擬定時(shí)器管理,定時(shí)器到期后觸發(fā)信號(hào)。
    9 Z2 z  K" R- ~, a3 \- v" B

    * x9 K# F" A$ `* U& C! S7 ~SIGWINCH (28)
    0 A0 F( p3 v( t# ~
  • 觸發(fā)方式:終端窗口大小改變。
  • 默認(rèn)操作:忽略信號(hào)。
  • 描述:當(dāng)終端窗口調(diào)整大小時(shí),前臺(tái)進(jìn)程會(huì)接收到此信號(hào)。
    $ j" D. |+ u# K5 M$ c

    3 ~: L+ i3 s* r6 {% ]
    + l3 V; ^3 Y' n( j$ K, k
    SIGPOLL/SIGIO (29): k% ^+ |0 D7 z* A% h4 O' g) c
  • 觸發(fā)方式:異步I/O事件發(fā)生。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:用于異步I/O操作,通知進(jìn)程文件描述符的I/O事件。( A& D  f8 k# u$ @0 k

    6 S" g- N# q3 q& [SIGSYS (31)
    * ?) V" L; I7 P* z2 ]) `; D
  • 觸發(fā)方式:進(jìn)程發(fā)起了無(wú)效的系統(tǒng)調(diào)用。
  • 默認(rèn)操作:終止進(jìn)程。
  • 描述:通常用于捕獲非法系統(tǒng)調(diào)用或程序錯(cuò)誤。
    - w5 W; |( s: k( [' U: T- B

    5 Q# i+ H, I- h- U# @" i這些信號(hào)為L(zhǎng)inux進(jìn)程提供了豐富的控制和通信機(jī)制。了解這些信號(hào)及其默認(rèn)行為,有助于編寫更加健壯的程序,并能夠有效處理各種異常和中斷。6 {0 K$ g8 ^4 i; N
    ( `; A0 E1 X& \; }

      ^6 }: h. K& m, k% i & e$ t7 y* j3 V4 K2 u
    點(diǎn)擊閱讀原文,更精彩~
  • 發(fā)表回復(fù)

    本版積分規(guī)則


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