博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下查看线程状态
阅读量:5049 次
发布时间:2019-06-12

本文共 674 字,大约阅读时间需要 2 分钟。

    今年开始和两个朋友一起做点事,我负责所有的软件开发,包括web、嵌入式和后台服务器的开发,感觉自己都全能了(偷笑)。

    前端软件,采用了linux的系统,在开发的过程中出现了一个非常奇怪的现象。按键线程,总是感觉被挂起了或者是卡到了某个点,按下按键时,软件无法检测到按键事件。但是,在按键线程的大循环里面,加一个printf函数输出,按键线程就又可以正常捕捉按键事件了。迫于无奈,我必须要查看线程的状态,到底这个线程是退出了还是被挂起了?于是,百度。在另外一个人的博客中发了,可以查看目录/proc/pid/task/tid/stat文件里面的信息。因此,先手动查看了这个文件,发现里面全是些数字,根本无从判断。发现同一个目录下有一个status的文件,使用cat进行查看,其中有一行State:r(running),这个不就是自己需要的信息吗。于是想通过popen在程序中将前面的功能实现,但是其中有需要获取按键线程的tid的功能。最开始使用了pthread_create时的第一个参数,做为tid,但是程序中发现,这个值根本就是一个负数。于是,又去百度,发现一个函数gettid。于是在linux下查看man文档,这个函数需要自己通过syscall来封装。(long)syscall(__NR_gettid)。然后继续使用上面的方法,看到了自己的线程确实是睡着了(sleeping)。这里把查看线程状态的方法记录下来,以备以后忘记了可以查看。

转载于:https://www.cnblogs.com/youyipin/p/7771689.html

你可能感兴趣的文章
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>
Spring
查看>>
Linux 系统的/var目录
查看>>