2012-01-27 64 views
0

給定一個進程ID,如何判斷當前進程是否在輪詢狀態被阻塞?即它已經用負超時調用了poll(),並且正在等待輸入準備就緒。處於投票狀態?

+1

「polling state」是什麼意思?輪詢通常不涉及阻塞。 – Mat 2012-01-27 09:55:28

+0

@Mat編輯的問題澄清(希望) – gcbenison 2012-01-27 10:50:30

回答

1

在類UNIX系統上,命令行實用程序「ps」提供此信息。取決於操作系統,有很多ps的風格,所以請閱讀手冊頁。

在一個BSD狀系統(MAC):

ps -eo pid,user,cpu,state,comm 

    PID USER  CPU STAT COMM 
    1 root  0 Ss /sbin/launchd 
    15 root  0 Ss /usr/libexec/kextd 
90710 root  0 R+ ps 
83804 joe  0 Ss /bin/bash 
89631 joe  0 S+ ssh 

其中STAT是過程狀態。 S意味着可中斷的睡眠。 s(小寫)表示會議的領導者。 '+'表示它在前臺進程組中。 R意味着運行或可運行(在運行隊列上)。還有更多可能的狀態。

+0

在Linux上似乎ps -o狀態給你的狀態信息;謝謝 – gcbenison 2012-01-27 10:54:12

+0

對不起,我沒有注意到這個問題上的Linux標籤,或者我會展示一個linux例子。 – joe 2012-01-28 11:00:56