我該如何使用代碼檢查Linux線程的狀態,而不是工具?我想知道一個線程是否正在運行,鎖定是否鎖定,或者是因爲其他原因而睡着。我知道Linux工具「top」可以完成這項工作。但是如何在我自己的代碼中實現它。謝謝。如何檢查Linux線程的狀態?
2
A
回答
6
我覺得你應該詳細研究一下/proc文件系統,也記錄在here, inside kernel source tree。
這是Linux內核告訴外部的方式!
還有一個libproc
(由ps
和top
使用,其讀取/proc/
僞文件)。
請參閱this question,與您的相關。
讀取/proc/
下的文件不會執行任何磁盤I/O(因爲/proc/
是僞文件系統),因此執行速度很快。
2
比方說你的進程ID是100
轉到/proc/100/task
目錄有你可以看到代表每個線程多個目錄。
然後在每個子目錄內,例如, /proc/100/task/10100
有一個名爲status
的文件。
此文件中的第二行是線程的狀態信息。
0
您也可以通過查看您的進程所屬服務的cgroup層次結構來找到它。 Cgroups有一個名爲「tasks」的文件,這個文件列出了一個服務的所有任務。
例如:
貓/sys/fs/cgroup/systemd/system.slice/hello.service/tasks
注:cgroup中應該在Linux內核中啓用。
相關問題
- 1. 如何檢查線程的狀態
- 2. 如何檢查電子在線狀態。
- 3. python:通過ID檢查線程狀態
- 4. 如何檢查進程是否處於掛起狀態(Linux)
- 5. 如何在java中檢查守護進程線程狀態?
- 6. 如何檢查線程堆棧的當前狀態
- 7. 在Linux中的線程狀態
- 8. 檢查程序的狀態
- 9. 如何檢查狀態onKeypress
- 10. 如何檢查namenode狀態?
- 11. 如何檢查JDialog狀態
- 12. 如何檢查suse linux中的服務器狀態?
- 13. C#:查詢線程狀態
- 14. Linux的替代睡眠的過程與狀態檢查調用
- 15. 檢查無線狀態的Qt
- 16. 檢查進程狀態
- 17. 檢查狀態的過程,可以在UNIX,Linux服務與Java
- 18. 我如何檢查一個星號中繼線的狀態
- 19. 檢查facebook用戶在線狀態
- 20. 無線上網狀態檢查
- 21. 檢查永久在線狀態
- 22. 如何檢測Android中的離線/在線狀態的設備狀態
- 23. 線程狀態
- 24. 狀態的線程
- 25. 如何將檢查狀態設置爲false如果檢查狀態不確定
- 26. 如何檢查RxBleConnection的狀態
- 27. 如何檢查syntastic的狀態?
- 28. 如何檢查故事板的狀態?
- 29. 如何檢查RegularExpressionValidator的狀態
- 30. 如何檢查ToggleButton的啓動狀態
解析'top'輸出一個選項? :-) – Irfy 2012-03-06 02:53:06