java中如何获取Runtime.getRuntime().exec()或ProcessBuilder.start()产生的进程信息

问题产生:最近做基于selenium2+robot framework的自动化项目中有如下需求:
在服务器端需关闭因Runtime.getRuntime().exec()或ProcessBuilder.start()调用”pybot”下发执行测试机脚本产生的诸如IEDriverServer.exe或chromedriver.exe以及iexplore.exe等进程以节省资源,且需要支持多脚本并发执行。如果在每次执行脚本之前或执行脚本之后用”tskill IEDriverServer”关闭,则可能会同时关闭正在并发执行的其它并不需要关闭的IEDriverServer.exe进程。理想中的关闭方法为先获取脚本执行时产生的IEDriverServer.exe进程PID,然后根据PID关闭该进程。
问题是在java中执行本地程序时,相关的资源分配等转为操作系统管理,我们并无法在java获取其唯一的PID等信息。

java中如何获取Runtime.getRuntime().exec()或ProcessBuilder.start()产生的进程信息? 比如映像名称、PID、内存使用等
这里写图片描述
原文地址:http://stackoverflow.com/questions/5284139/how-do-i-find-the-process-id-pid-of-a-process-started-in-java

在用Runtime.getRuntime().exec()启动本地程序之前和之后分别用”tasklist”获取系统中的进程列表,计算二者的差集来获得本次调用产生的进程信息。

经过本人测试发现,在并发执行情况下,还是会出现进程关闭错误的情况。比如线程t1在调用本地程序产生进程p1过程中但没产生之前,线程t2亦同时调用并产生进程p2,此时在t2中计算差集结果为p1+p2,显然是不正确的。此种解决方案算是一个不完美的想法吧。大家有什么方法能解决此问题,欢迎留言,谢谢~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值