java 获取linux进程信息

cnoolon 2008-09-26 05:36:48
我现在在做的项目是acm在线评判系统,现在遇到一个问题。
当用户提交他们的代码到服务器时,服务器就要运行他们的代码,并且要获得给程序的运行时间,使用内存等等。
各位有没有好的方法获取某一进程的信息。
我的代码:
Runtime.getRuntime().exec("./MainGP.exe"); --用户程序
Process process = Runtime.getRuntime().exec("ps aux | grep MainGP.exe");--获取信息
BufferedReader br = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String info = br.readLine();-------info为null

可是当我把"ps aux | grep MainGP.exe" 改为"ps aux" info就不为null了
而且当我直接在命令行中执行./MainGP.exe , ps aux | grep MainGP.exe是可以获取其信息的

请各位告诉指点
...全文
554 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsjlw 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jsjlw 的回复:]
我试了ls之类的可以.但ps的也不行.费解中,等待高手..

曲线一下..  ps aux | grep MainGP.exe >a.txt  然后读取文件a.txt..呵呵.
[/Quote]

这样还是不行..下面这个应该可以..

Process process = Runtime.getRuntime().exec(new   String[]{"/bin/sh","-c","ps aux | grep MainGP.exe"});--获取信息


楼主试试
jsjlw 2008-09-27
  • 打赏
  • 举报
回复
我试了ls之类的可以.但ps的也不行.费解中,等待高手..

曲线一下.. ps aux | grep MainGP.exe >a.txt 然后读取文件a.txt..呵呵.
  • 打赏
  • 举报
回复
长见识了……
liaoyi_ipanel 2008-09-27
  • 打赏
  • 举报
回复
帮顶
x____ 2008-09-27
  • 打赏
  • 举报
回复
我觉得应该是 吧参数 ps aux | grep 放到MainGP.exe 后面吧
如: Runtime.getRuntime().exec("MainGP.exe ps aux | grep ");
cnoolon 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jsjlw 的回复:]
我觉得应该把结果ps aux | grep MainGP.exe 输出一下.再用getInputStream读取吧.
[/Quote]

我就是这样的弄得 可是当你哟你用ps aux | grep MainGP.exe时候getInputStream读取出来为null,
用getErrorStream()会得到错误信息
emailfly 2008-09-26
  • 打赏
  • 举报
回复
帮顶
cnoolon 2008-09-26
  • 打赏
  • 举报
回复
没人 郁闷
jsjlw 2008-09-26
  • 打赏
  • 举报
回复
我觉得应该把结果ps aux | grep MainGP.exe 输出一下.再用getInputStream读取吧.
cnoolon 2008-09-26
  • 打赏
  • 举报
回复
这么快就沉了。。。唉。。。
huangyangweiyue 2008-09-26
  • 打赏
  • 举报
回复
帮顶下

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧