博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java程序员的日常 —— 多进程开发
阅读量:6080 次
发布时间:2019-06-20

本文共 1448 字,大约阅读时间需要 4 分钟。

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

这里简单的介绍下:

如何在Java中执行命令

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

方法1:Runtime

windows版本:Process process = Runtime.getRuntime().exec("ipconfig /all");Linux版本:Process process = Runtime.getRuntime().exec("ifconfig -a");

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

获得进程输出信息:

BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));String line = null;while ((line = input.readLine()) != null) {//TODO}

获得进程错误信息:

BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));String line = null;while ((line = error.readLine()) != null) {//TODO}

方法2:ProcessBuilder

比如上面的命令:ProcessBuilder builder =  new ProcessBuilder("ipconfig","/all");Process process = builder.start();

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

builder.redirectErrorStream(true);process = builder.start();BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));    String readLine;while (null != (readLine = br.readLine())) {    //TODO    }

进程捕获

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

伪代码为:

获取进程列表启动进程获取进程列表对比进程列表,得到最新启动的进程

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

windows版本获得进程列表

Runtime.getRuntime().exec("cmd /C tasklist");

linux版本获得进程列表

ProcessBuilder builder =  new ProcessBuilder("ps","aux");Process process = builder.start();

停止进程

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

windows版本停止进程

Runtime.getRuntime().exec("cmd /C taskkill /F /PID " + pid);

linux版本停止进程

Runtime.getRuntime().exec("kill -9 "+pid);

本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
开发环境、生产环境、测试环境的基本理解和区别
查看>>
tomcat多应用之间如何共享jar
查看>>
Flex前后台交互,service层调用后台服务的简单封装
查看>>
MySQL入门12-数据类型
查看>>
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>
修改字符集
查看>>
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>