Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Linux线程的状态?_Linux_Multithreading - Fatal编程技术网

如何检查Linux线程的状态?

如何检查Linux线程的状态?,linux,multithreading,Linux,Multithreading,如何使用代码而不是工具检查Linux线程的状态?我想知道某个线程是否正在运行、是否被锁阻塞或是否由于其他原因而休眠。我知道Linux工具“top”可以完成这项工作。但是如何在我自己的代码中实现它。谢谢。我认为您应该详细研究文件系统,也有文档记录 这就是Linux内核告诉外界的方式 还有一个libproc(由ps和top使用,读取/proc/伪文件) 看,和你的有关 读取/proc/下的文件不进行任何磁盘I/O操作(因为/proc/是一个伪文件系统),所以速度很快。假设进程id为100 转到/pr

如何使用代码而不是工具检查Linux线程的状态?我想知道某个线程是否正在运行、是否被锁阻塞或是否由于其他原因而休眠。我知道Linux工具“top”可以完成这项工作。但是如何在我自己的代码中实现它。谢谢。

我认为您应该详细研究文件系统,也有文档记录

这就是Linux内核告诉外界的方式

还有一个
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
输出是一个选项吗?:-)