最近發現一個問題,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命令輸出說明的錯誤解釋非常多,我寫這篇文章,希望能糾正一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/145678.html
標籤:Linux
下一篇:Linux-行程的觀察
