ps命令輸出進程狀態S后面加號的含義


最近發現一個問題,ps命令輸出里面進程狀態為S+的含義,網上好多文章都說是表明進程“位於在后台進程組”。

       例如下面這個ps命令輸出說明:

    D    不可中斷     Uninterruptible sleep (usually IO)
    R    正在運行,或在隊列中的進程
    S    處於休眠狀態
    T    停止或被追蹤
    Z    僵屍進程
    W    進入內存交換(從內核2.6開始無效)
    X    死掉的進程


    <    高優先級
    N    低優先級
    L    有些頁被鎖進內存
    s    包含子進程
    +    位於后台的進程組;
    l    多線程,克隆線程  multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

       但其實這是不對的,后面有加號說明進程是“位於在前台進程組”。也就是進程可以使用鍵盤輸出。下面做一個試驗證明這點:

 

       首先,在終端一個會話執行一個sleep命令,讓其在前台運行。

       接着,另啟一個終端會話,啟動一個后台運行的sleep命令

       使用ps查看進程狀態

       可以看出在前台的進程狀態為S+,而在后台的sleep進程狀態都是S

 

       查詢ps命令的幫助,是說”is in the foreground process group”,也可以證明我說的這點。

 

       網上流傳的ps命令輸出說明的錯誤解釋非常多,我寫這篇文章,希望能糾正一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM