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

最近發現一個問題,ps命令輸出裏面進程狀態爲S+的含義,網上好多文章都說是代表進程「位於在後臺進程組」。多線程

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

    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命令,讓其在前臺運行。code

       接着,另啓一個終端會話,啓動一個後臺運行的sleep命令blog

       使用ps查看進程狀態隊列

       能夠看出在前臺的進程狀態爲S+,而在後臺的sleep進程狀態都是S進程

 

       查詢ps命令的幫助,是說」is in the foreground process group」,也能夠證實我說的這點。內存

 

       網上流傳的ps命令輸出說明的錯誤解釋很是多,我寫這篇文章,但願能糾正一下class

相關文章
相關標籤/搜索