1. 程式人生 > >Linux:程序狀態

Linux:程序狀態

  • 為了弄明白正在執行的程序什麼意思,我們需要知道程序不同的狀態,一個程序可以有幾個狀態
    1.執行態(running):並不意味著程序一定在執行中,他表明程序要麼在執行要麼在執行佇列裡
    2.可中斷睡眠狀態(sleeping):意味著程序在等待事件完成
    3.不可中斷睡眠狀態(disk sleep):在這個狀態的程序會等待IO的結束
    4.停止狀態(stopped):可以通過傳送SIGSTOP訊號給程序來停止程序,這個被暫停的程序可以通過傳送SIGCONT訊號讓程序繼續執行
    5.死亡狀態(dead):這個狀態只是一個返回狀態,你不會在任何任務列表裡看到這個狀態
    6.殭屍狀態(zombie): 僵死狀態是一個比較特殊的狀態,當子程序退出但父程序沒有讀取到子程序退出返回的程式碼時就會產生僵死狀態,僵死程序會佔用你的正常資源
  • 一個讀取程序狀態的程式碼
    (1)執行態,執行程式碼後,我們領開啟一個終端,輸入:ps aux | head -n 1 && ps aux|grep a.out
    可以檢視a.out的執行狀態,為執行態
    執行態

    (2)睡眠態,我們給while迴圈里加上sleep(1);的程式碼然後檢視程序狀態,為睡眠態
    在這裡插入圖片描述
    在這裡插入圖片描述
    (3)停止狀態,我們按ctrl+z,程序停止,然後檢視程序狀態,為停止態
    在這裡插入圖片描述
    在這裡插入圖片描述