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