您的位置:首页 > 其它

tasklist的坑

2016-03-28 00:00 197 查看
摘要: java 下想看系统中的进程

java 下想看系统中的进程,一般上网看,都会提出Runtime.executeCommand方式来执行tasklist,然后在返回结果中取得字符串,再找出进程ID。

其实早想到这种shell方式一定有问题,没想到这么多问题

坑1: windows系统非常自以为是,当执行速度过慢时,默认开启动“预读”功能,大概是将内存块直接写成文件,当执行时再取回填入内存。但它擅自将文件名连后缀改成了大写。当然windows 自己是不区分大小写的,但java区分。测试时测不出来,非要很慢的机器,在一定机率下会出。

坑2:想把一个系统做好很难,想搞坏一部分也很难。由于网上提供的情报,10多种情况,会造成RPC服务器出错,导致tasklist不能执行。在命令行下输入tasklist直接报错,程序就更不行了。暂时无解。

坑3:想不到的是,当轮询执行tasklist时,会有一定机率说找不到某个进程,但在任务管理器看时确有,而再执行tasklist又找到了。其成因还不清楚,暂时让其两次确认找不到才返回找不到,机率减至很低。

另找到wmic来执行,但未能测试坑2/3的情况,想造一个RPC不可用也很难。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: