如何检查Linux线程的状态?
如何使用代码而不是工具检查Linux线程的状态?我想知道某个线程是否正在运行、是否被锁阻塞或是否由于其他原因而休眠。我知道Linux工具“top”可以完成这项工作。但是如何在我自己的代码中实现它。谢谢。我认为您应该详细研究文件系统,也有文档记录 这就是Linux内核告诉外界的方式 还有一个如何检查Linux线程的状态?,linux,multithreading,Linux,Multithreading,如何使用代码而不是工具检查Linux线程的状态?我想知道某个线程是否正在运行、是否被锁阻塞或是否由于其他原因而休眠。我知道Linux工具“top”可以完成这项工作。但是如何在我自己的代码中实现它。谢谢。我认为您应该详细研究文件系统,也有文档记录 这就是Linux内核告诉外界的方式 还有一个libproc(由ps和top使用,读取/proc/伪文件) 看,和你的有关 读取/proc/下的文件不进行任何磁盘I/O操作(因为/proc/是一个伪文件系统),所以速度很快。假设进程id为100 转到/pr
libproc
(由ps
和top
使用,读取/proc/
伪文件)
看,和你的有关
读取
/proc/
下的文件不进行任何磁盘I/O操作(因为/proc/
是一个伪文件系统),所以速度很快。假设进程id为100
转到/proc/100/task
目录,您可以看到代表每个线程的多个目录
然后在每个子目录中,例如/proc/100/task/10100
有一个名为status
的文件
该文件中的第二行是线程的状态信息。您也可以通过查看进程所属服务的cgroup层次结构来找到它。cgroup有一个名为“tasks”的文件,该文件列出了服务的所有任务 例如: cat/sys/fs/cgroup/systemd/system.slice/hello.service/tasks
注意:应该在linux内核中启用cgroup。解析
top
输出是一个选项吗?:-)