從程序員的角度來看,進程有3種狀態(tài)。
1、進行中
進程正在運行,或者等待被執(zhí)行。
2、掛起(也叫停止)
臨時掛起, 比如執(zhí)行了sleep(),wait()函數(shù)等。 直到收到SIGCONT信號接著運行進程。
3、終止
進程已經(jīng)永遠結(jié)束,等待父進程回收或已經(jīng)被回收。 常見的代碼中執(zhí)行exit函數(shù),或者cli下ctrl+c。
注:有些童鞋可能覺得 “運行狀態(tài)下的等待被運行”和“掛起”有什么區(qū)別呢?
答:
掛起狀態(tài)是收到一個信號,比如SIGSTOP,SIGISTP等,變?yōu)閽炱馉顟B(tài)。在這期間直到收到繼續(xù)執(zhí)行進程的 SIGCONT信號,否則不會被內(nèi)核執(zhí)行。它告訴內(nèi)核大哥, 我還在等待 “SIGCONT信號“的通知, 內(nèi)核你還不能調(diào)度我。 而“進行狀態(tài)下的等待被運行”是 進程告訴內(nèi)核大哥我已經(jīng)準備好了, 你可以隨時調(diào)度我了。
原文地址:https://learnku.com/articles/70147