[英]What happens when a program receives SIGTSTP signal
我用C語言編寫了一個程序,需要處理ctrl + z
和相應的信號SIGTSTP和SIGCONT。
收到信號后,我的變量和過程會怎樣?
通過信號處理程序signal(SIGCONT, &sig_handler);
處理signal(SIGCONT, &sig_handler);
,我的流程會怎樣?
至少有三種可能的情況:
該進程當前正在用戶空間中運行:
在這種情況下,該進程將被搶占(類似於多任務處理時其時間片用完的方式),直到恢復后才考慮重新安排該進程。
該進程當前正在系統調用中等待:
通常,系統調用會中斷,並且直到恢復后才考慮對該進程進行調度。 恢復后,某些系統調用將返回-EINTR
,必須重新啟動。 某些系統調用會自動重新啟動。
進程正在等待磁盤(狀態D),例如,等待緩沖區/頁面進入:
該信號被設置為掛起,但直到操作完成才傳遞。 之后,它與上述情況之一相同。
通常,所有這些對於過程本身都是相當透明的。
這與SIGTSTP
和SIGSTOP
的默認操作相同(但是不能捕獲或忽略后者)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.