最近准备用java写一个简单的远程进程监控程序,在验证捕获本机进程相关信息的同时有些小发现,特地写一篇博文,希望大家可以帮忙指正不足之处。

  很简单的程序,控制台输出进程的所有信息,结果如下:

  我在想我所要写的程序只要进程名就可以了,由于每行的信息都是用String类型的line存放,所以可以用方法substring只获取进程名,但是不知道进程名所占字节数,所以一个一个实验,结果程序改成如下:

  运行结果如下:

  由程序和结果可知进程名占56个字节,这个是固定的吗?假如我们的可执行程序名字超过了56个字节大小,那么会怎样?结果还正确吗?我下面就做这个实验,用VS2008建立一个工程创建的工程名称为30个a,那么他的可执行程序名所占字节数就为68,溢出,如下图:

第一个为我们的可执行程序,我们执行它,查看进程管理器

进程管理器中改可执行程序的进程名完好啊,我们再执行我们的java程序来查看,结果如下

竟然不完整少了很多,这是怎么回事?我们再命令提示符下查看下进程,

这里竟然也不完整啊,因为程序是用命令提示符命令得到进程信息的,所以显示的和命令提示符一样。

  小白还需要找些资料,继续努力啊,由于对一些计算机基本原理比较感兴趣,所以继续努力探索!