簡體   English   中英

程序收到SIGTSTP信號時會發生什么

[英]What happens when a program receives SIGTSTP signal

我用C語言編寫了一個程序,需要處理ctrl + z和相應的信號SIGTSTP和SIGCONT。

收到信號后,我的變量和過程會怎樣?
通過信號處理程序signal(SIGCONT, &sig_handler);處理signal(SIGCONT, &sig_handler); ,我的流程會怎樣?

至少有三種可能的情況:

  • 該進程當前正在用戶空間中運行:

    在這種情況下,該進程將被搶占(類似於多任務處理時其時間片用完的方式),直到恢復后才考慮重新安排該進程。

  • 該進程當前正在系統調用中等待:

    通常,系統調用會中斷,並且直到恢復后才考慮對該進程進行調度。 恢復后,某些系統調用將返回-EINTR ,必須重新啟動。 某些系統調用會自動重新啟動。

  • 進程正在等待磁盤(狀態D),例如,等待緩沖區/頁面進入:

    該信號被設置為掛起,但直到操作完成才傳遞。 之后,它與上述情況之一相同。

通常,所有這些對於過程本身都是相當透明的。

這與SIGTSTPSIGSTOP的默認操作相同(但是不能捕獲或忽略后者)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM