前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java程序员的日常 —— 多进程开发

Java程序员的日常 —— 多进程开发

作者头像
用户1154259
发布2018-01-17 14:59:46
1.1K0
发布2018-01-17 14:59:46
举报

最近再弄进程管理相关的工作,因此必要的就涉及到各种系统下关于进程的管理。 这里简单的介绍下:

如何在Java中执行命令

在windows下肯定是dos命令了,而在linux则为shell命令。执行的方式差不多相同:

方法1:Runtime
代码语言:javascript
复制
windows版本:
Process process = Runtime.getRuntime().exec("ipconfig /all");
Linux版本:
Process process = Runtime.getRuntime().exec("ifconfig -a");

由此可以见,java程序都是相同的,只是命令不同而已。

获得进程输出信息:

代码语言:javascript
复制
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = input.readLine()) != null) {
//TODO
}

获得进程错误信息:

代码语言:javascript
复制
BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = null;
while ((line = error.readLine()) != null) {
//TODO
}
方法2:ProcessBuilder
代码语言:javascript
复制
比如上面的命令:
ProcessBuilder builder =  new ProcessBuilder("ipconfig","/all");
Process process = builder.start();

获得输出信息同上面,但是多了一个合并输出和错误的功能:

代码语言:javascript
复制
builder.redirectErrorStream(true);
process = builder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));    
String readLine;
while (null != (readLine = br.readLine())) {    
//TODO    
}   

进程捕获

这里捕获进程的方式,比较投机,是对比进程启动的前后差异:

伪代码为:

代码语言:javascript
复制
获取进程列表
启动进程
获取进程列表
对比进程列表,得到最新启动的进程

因此,就需要知道如何获得进程列表:

windows版本获得进程列表
代码语言:javascript
复制
Runtime.getRuntime().exec("cmd /C tasklist");
linux版本获得进程列表
代码语言:javascript
复制
ProcessBuilder builder =  new ProcessBuilder("ps","aux");
Process process = builder.start();    

停止进程

同上面相似,需要使用对应版本的命令:

windows版本停止进程
代码语言:javascript
复制
Runtime.getRuntime().exec("cmd /C taskkill /F /PID " + pid);
linux版本停止进程
代码语言:javascript
复制
Runtime.getRuntime().exec("kill -9 "+pid);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何在Java中执行命令
    • 方法1:Runtime
      • 方法2:ProcessBuilder
      • 进程捕获
        • windows版本获得进程列表
          • linux版本获得进程列表
          • 停止进程
            • windows版本停止进程
              • linux版本停止进程
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档