14
A
回答
20
HTOP筆者在這裏。我不知道這種狀態代碼在htop代碼庫中。 請記住,htop僅爲Linux編寫,因此不支持macOS/OSX。當我聽說有人在OSX上運行它時,他們經常使用過時的,不受支持的分支(最新版htop是2.0.1,包括macOS支持)。
42
下面是在S,STAT和狀態輸出說明符(標頭「STAT」或「S」)將顯示來描述一個進程的狀態的不同的值:
d不間斷睡眠(通常IO)
R運行從或可運行(在運行隊列)
š中斷睡眠(等待一個事件來完成)
T已停止,或者通過作業控制信號,或因爲它正在被跟蹤。
W¯¯分頁(因爲在2.6.xx內核無效)
X死(不應該看到的)
ž解散(「殭屍」)過程中,終止,但不是由其父收穫。
來源:男子PS
14
我最近有同樣的問題。我們可以嘗試看看它在htop sources:
process->state =
ProcessList_decodeState(p->p_stat == SZOMB ? SZOMB : ki->state);
static int
ProcessList_decodeState(int st) {
switch (st) {
case SIDL:
return 'C';
case SRUN:
return 'R';
case SSLEEP:
return 'S';
case SSTOP:
return 'T';
case SZOMB:
return 'Z';
default:
return '?';
}
}
所以我們去的過程狀態的Unix的定義在/usr/include/sys/proc.h:
/* Status values. */
#define SIDL 1 /* Process being created by fork. */
#define SRUN 2 /* Currently runnable. */
#define SSLEEP 3 /* Sleeping on an address. */
#define SSTOP 4 /* Process debugging or suspension. */
#define SZOMB 5 /* Awaiting collection by parent. */
所以,「C '狀態意味着'流程由叉子創建'。它是什麼?根據old unix sources,這是一個暫時的狀態,當分叉進程時沒有足夠的內存時,父節點需要被換出。
什麼?
返回htop源代碼。我們在哪裏得到ki->state
?
// For all threads in process:
error = thread_info(ki->thread_list[j], THREAD_BASIC_INFO,
(thread_info_t) & ki->thval[j].tb,
&thread_info_count);
tstate = ProcessList_machStateOrder(ki->thval[j].tb.run_state,
ki->thval[j].tb.sleep_time);
if (tstate < ki->state)
ki->state = tstate;
// Below...
static int
ProcessList_machStateOrder(int s, long sleep_time) {
switch (s) {
case TH_STATE_RUNNING:
return 1;
case TH_STATE_UNINTERRUPTIBLE:
return 2;
case TH_STATE_WAITING:
return (sleep_time > 20) ? 4 : 3;
case TH_STATE_STOPPED:
return 5;
case TH_STATE_HALTED:
return 6;
default:
return 7;
}
}
// In mach/thread_info.h:
#define TH_STATE_RUNNING 1 /* thread is running normally */
#define TH_STATE_STOPPED 2 /* thread is stopped */
#define TH_STATE_WAITING 3 /* thread is waiting normally */
#define TH_STATE_UNINTERRUPTIBLE 4 /* thread is in an uninterruptible wait */
#define TH_STATE_HALTED 5 /* thread is halted at a clean point */
我們有以下的(搞砸)映射:
Thread state | Mapped to | htop state| 'top' state | 'ps' state
----------------------------------------------------------------------------
TH_STATE_RUNNING | SIDL(1) | 'C' | running | 'R'
TH_STATE_UNINTERRUPTIBLE | SRUN(2) | 'R' | stuck | 'U'
TH_STATE_WAITING (short) | SSLEEP(3) | 'S' | sleeping | 'S'
TH_STATE_WAITING (long) | SSTOP(4) | 'T' | idle | 'I'
TH_STATE_STOPPED | SZOMB(5) | 'Z' | stopped | 'T'
那麼,真正的答案是:'C' 意味着進程正在運行。
它是怎麼發生的?似乎ki->state
處理是從ps
source借用的,並未針對Unix進程代碼進行調整。
更新:此bug is fixed。耶開源!
相關問題
- 1. C++'保留狀態'是什麼意思?
- 2. Android中的「狀態」是什麼意思
- 3. 豆的狀態是什麼意思?
- 4. Java JVM分析,線程狀態 - 「Monitor」狀態是什麼意思?
- 5. XMLHttpRequest狀態碼-1是什麼意思?
- 6. 註冊狀態是什麼意思?
- 7. 退出狀態205是什麼意思?
- 8. kafka broker狀態4是什麼意思
- 9. C中##是什麼意思?
- 10. 是什麼意思:是什麼意思?
- 11. 什麼?在C#中是什麼意思?
- 12. 「任意形狀」是什麼意思?
- 13. 這是什麼意思-c
- 14. %* c是什麼意思?
- 15. 這是什麼意思 - C#
- 16. cmd/C是什麼意思?
- 17. 這是什麼意思? [c#]
- 18. tcpmon中的狀態(Active,Req,Done)列是什麼意思?
- 19. SLURM中的狀態「CG」是什麼意思?
- 20. BASE中的「軟狀態」是什麼意思?
- 21. SVN中的E狀態碼是什麼意思?
- 22. 中斷連接狀態的意思是什麼?
- 23. Log4j2配置中的「狀態」是什麼意思?
- 24. Atomikos日誌中UserTransaction的「TERMINATED」狀態是什麼意思?
- 25. Android AudioTrack中的「狀態-12」是什麼意思?
- 26. 在c/C++中,^ =是什麼意思?
- 27. 這是什麼意思「角度服務是無狀態的」
- 28. C#中的「this」是什麼意思?
- 29. c中的(char *)0是什麼意思?
- 30. 什麼是connection.Dispose()在C#中的意思?