java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...

2023-11-17

Java调用批处理或可执行文件

用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式:

Process process = Runtime.getRuntime().exec(".\\p.exe");

process.waitfor( );

在上面的程序中,第一行的“.\\p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。

但在windows平台上,如果处理不当,有时并不能得到预期的结果。下面是在实际编程中总结的几种需要注意的情况:

1、执行DOS的内部命令

如果要执行一条DOS内部命令,有两种方法。一种方法是把命令解释器包含在exec()的参数中。例如,执行dir命令,在NT上, 可写成exec("cmd.exe /c dir"),在windows 95/98下,可写成“command.exe /c dir”,其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。另一种方法是,把内部命令放在一个批命令my_dir.bat文件中,在Java程序中写成exec("my_dir.bat")。如果仅仅写成exec("dir"),Java虚拟机则会报运行时错误。前一种方法要保证程序的可移植性,需要在程序中读取运行的操作系统平台,以调用不同的命令解释器。后一种方法则不需要做更多的处理。

2、打开一个不可执行的文件

打开一个不可执行的文件,但该文件存在关联的应用程序,则可以有两种方式。 以打开一个word文档a.doc文件为例,Java中可以有以下两种写法:

exec("start .\\a.doc");

exec(" c:\\Program Files\\Microsoft Office\\office\\winword.exe .\\a.doc");

显然,前一种方法更为简捷方便。

3、执行一个有标准输出的DOS可执行程序

在windows平台上,运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭,从而导致Java应用程序阻塞在waitfor( )。导致该现象的一个可能的原因是,该可执行程序的标准输出比较多,而运行窗口的标准输出缓冲区不够大。解决的办法是,利用Java提供的Process类提供的方法让Java虚拟机截获被调用程序的DOS运行窗口的标准输出,在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下:

String ls_1;

Process process = Runtime.getRuntime().exec("cmd /c dir \\windows");

BufferedReader bufferedReader = new BufferedReader( \

new InputStreamReader(process.getInputStream());

while ( (ls_1=bufferedReader.readLine()) != null)

System.out.println(ls_1);

process.waitfor( );

4、用DEL硬删除aaa.doc

Process process = Runtime.getRuntime().exec("cmd /c del f:\\aaa.doc");

5、从JDK1.5之后,Java开始提供包:java.lang.management

<
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器... 的相关文章

  • Tensorflow Serving 模型部署指南

    文章目录 1 Saver端 模型的离线训练与导出 1 1 saved model 模型保存与载入 1 1 1 简单场景 模型保存 1 1 2 简单场景 模型载入 1 1 3 使用SignatureDef 模型保存 1 1 4 使用Signa
  • 一开机checkingmedia_Win7系统开机提示Checking Media Presence如何解决

    Win7系统在开机的时候 总是会弹出各种各样的错误提示 比如最近就有win732位系统用户反映说开机的时候提示Checking MediaPresence 出现这样的问题可能是启动顺序问题导致的 现在给大家分享一下Win7系统开机提示Che
  • actuator--基础--01--介绍

    actuator 基础 01 介绍 1 介绍 是一个采集应用内部信息暴露给外部的模块 2 提供哪些的功能 健康检查 审计 指标收集 HTTP 跟踪 监控和管理Spring Boot 应用 2 1 访问方式 上述的功能可以通过HTTP 和 J
  • ‘sslSocketFactory(javax.net.ssl.SSLSocketFactory)‘ is deprecated

    sslSocketFactory javax net ssl SSLSocketFactory is deprecated 具体信息如下 public OkHttpClient Builder sslSocketFactory SSLSoc
  • Spring Boot实践 第二章 Spring boot 的配置文件

    前一章 我们创建了第一个spring boot 程序 这一章分享一下spring boot的配置方式和一些技巧 spring boot 的特性之一就是 配置简单 spring boot不再使用之前spring 的xml配置方式 xml的配置
  • Netty 性能测试(与Tomcat 对比)

    一直以来都认为 Netty 的性能会非常优秀 打算在适当的时候使用它来开发一些要求超高新能的服务 今天兴致勃勃的写了个简单的 HTTP 服务 同样也用 tomcat 写了一个对比的 jsp 页面 结果测试下来 感觉 Netty 的性能提升并
  • 【数据结构】查找算法:二分查找、顺序查找

    08年9月入学 12年7月毕业 结束了我在软件学院愉快丰富的大学生活 此系列是对四年专业课程学习的回顾 索引参见 http blog csdn net xiaowei cqu article details 7747205 查找算法 查找算
  • 企业微信免登录跳转自建应用

    项目场景 企业微信免登录自建H5应用 项目场景 已存在开发好的web程序 现在需要集成到企业应用里 预想的是新建一个企业微信应用 点击后直接免登录进入web程序应用 一 创建企业微信应用 首先 创建企业微信账户并进入管理后台 https w
  • MyBatis快速入门(一) 搭建环境和单表映射

    MyBatis简介 一说起对象关系映射框架 大家第一时间想到的肯定是Hibernate Hibernate作为一个著名的框架 功能十分强大 我们只需要配置好实体类和数据表之间的关系 Hibernate就会自动帮我们完成生成并执行SQL语句
  • hive使用时的用户权限问题

    0 jdbc hive2 node1 10000 gt create role root Error Error while processing statement FAILED Execution Error return code 1
  • 599. Minimum Index Sum of Two Lists

    Suppose Andy and Doris want to choose a restaurant for dinner and they both have a list of favorite restaurants represen
  • Java跨平台原理

    第二部分 Java跨平台原理 1 什么是平台 Java是可以跨平台的编程语言 那我们首先得知道什么是平台 我们把CPU处理器与操作系统的整体叫平台 CPU大家都知道 如果计算机是人 那CPU就是人的大脑 它既负责思维运算 又负责身体各部件的
  • Hadoop003-Hadoop的I/O操作

    1 数据完整性 重点词汇 1 校验和 checksum 2 复本因子 replication factor 3 一系列datanode组成的管线 4 fs checksum 5 distcp 2 压缩 文件压缩优点 1 减少存储文件所需要的
  • django启动服务器失败-已解决

    参考菜鸟教程 启动失败 解决办法 将python3改为python
  • android手机时钟、闹钟、计时器、秒表app源码

    简 介 此多功能闹钟界面采用TabHost框架 头部包含分别用LinearLayout水平布局显示四个标签闹钟 时钟 计时器和秒表 FrameLayout框架内部采用LinearLayout垂直布局 功能事件的基本实现分别有AlarmVie
  • MyBatis+MySQL 返回插入的主键ID

    需求 使用MyBatis往MySQL数据库中插入一条记录后 需要返回该条记录的自增主键值 方法 在mapper中指定keyProperty属性 示例如下 Xml代码
  • Unity里面实现单侧拉伸

    完成部分功能的时候 需要模型单侧拉伸 模型锚点不好修改下 可以通过父子物体的方式来实现修改锚点从而实现单侧拉伸 普通状况下锚点在中间 直接拉伸会从中间往两侧伸展 通过把目标对象挂靠在一个空的GameObject中 再把目标对象的一角对应在空
  • (详细安装python_pcl) python_pcl+windows+anaconda

    需要根据已有的python pcl whl文件的版本来创建对应anaconda虚拟环境的python版本 这里拿python pcl 0 3 0rc1 cp37 cp37m win amd64 whl 文件来举例 可以根据文件名cp37 来
  • 面试逻辑题

    逻辑题目 逻辑题目现在也是面试中常考的题目 也不清楚面试出这种题目的意义 可能就是考察面试人员是否逻辑清晰 这种题目没有什么好的方法 除非你见过原题 否则 只能根据所给出的条件慢慢分析 尽量不要用常规思路 希望大家要跳跃思维 如果实在不行就

随机推荐

  • 二进制安装kubernetes三主三从高可用集群

    本文基于Kubernetes1 19版本 以二进制文件方式对如何配置 部署一个启用了安全机制 3节点高可用的Kubernetes集群进行说明 对于测试环境 可以适当进行简化 将某些组件部署为单点 一 k8s高可用集群架构 在正式的环境中应确
  • 数据库的数据备份和数据恢复MySQL

    一 数据的备份 在未登录MySQL的状态下输入下列代码 格式如下 mysqldump uusername p gt d db sql 例如 我的用户名为root 我将备份文件放到d盘目录下 将文件取名为db sql 需要注意两个地方 1 p
  • TIME_WAIT机理

    注 本文系转载 尊重原作者原文链接 TIME WAIT状态原理 通信双方建立TCP连接后 主动关闭连接的一方就会进入TIME WAIT状态 客户端主动关闭连接时 会发送最后一个ack后 然后会进入TIME WAIT状态 再停留2个MSL时间
  • H5+css+js的商品放大镜效果

  • vCenter Server安装报错:内存或cpu不足

    vCenter Server安装报错 内存或cpu不足 前言 在安装vCenter Server7 0时报错 Not enough memory in target host EXSI7 0安装在VMware workstation里面 配
  • 解决用steam客户端购买游戏验证登录信息失败的方法

    用steam客户端购买游戏或者订阅Mod的时候会弹出 正在验证登录信息 的界面 然后登陆失败 尽管你已经登陆了steam 但是好像没有登陆到steam服务器上 你就算是重新登录 翻墙 使用steamcommunity插件 使用加速器 电脑杀
  • HJ28 素数伴侣【python3】

    题目描述 若两个正整数的和为素数 则这两个正整数称之为 素数伴侣 如2和5 6和13 它们能应用于通信加密 现在密码学会请你设计一个程序 从已有的 N N 为偶数 个正整数中挑选出若干对组成 素数伴侣 挑选方案多种多样 例如有4个正整数 2
  • 重启kibana的脚本

    2019独角兽企业重金招聘Python工程师标准 gt gt gt bin bash echo e 033 31m stop kibana by 5601 Now 033 0m ps ef netstat anp grep 5601 awk
  • 【Java笔记】Java8中数组(引用类型)、String、List、Set之间的相互转换问题

    数组 String List Set之间的相互转换问题 如果觉得对你有帮助 能否点个赞或关个注 以示鼓励笔者呢 博客目录 先点这里 本博主要是相理清楚一些转换的逻辑 顺便总结一下贴出来 这里是把一些可以JDK自带的使用方法写出了 不代表没有
  • 解析js面试题(上)

    注 本篇博客的题目出自于博主 小平果118博客 题目地址 http blog csdn net i10630226 article details 49765737 由于该博客并没有抛出来来答案和解析 我在这里以自己的理解来做一下这些题目
  • MicroBlaze系列教程(3):AXI_TIMER的使用

    文章目录 toc AXI TIMER简介 常用函数 使用示例 参考资料 工程下载 本文是Xilinx MicroBlaze系列教程的第3篇文章 AXI TIMER简介 AXI TIMER支持两路可编程32位计数器 可以配置为中断 捕获 PW
  • LoadRunner下载和安装

    文章目录 一 下载地址 二 安装步骤 三 安装过程中遇到的问题 一 下载地址 官方下载地址 https my microfocus com myproducts 网盘下载地址 https pan baidu com s 1hiGC9FjfK
  • cudnn下载与安装

    cudnn的安装 cudnn的安装非常简单 1 下载安装文件 按需求下载cudnn的安装文件 https developer nvidia com rdp cudnn archive 需要注册账号 2 安装cudnn 解压下载的文件 可以看
  • 搭建完整的arm-linux-gcc等交叉编译环境

    搭建完整的arm linux gcc等交叉编译环境 链接 https www cnblogs com uestc mm p 6656325 html 安装环境 Linux版本 Ubuntu 12 04 内核版本 Linux 3 5 0 交叉
  • Android AutoLayout集成使用

    转载自楊帥简书 https www jianshu com p da5d5d4d0901 由于Android屏幕尺寸众多的情况 Android适配一直是个问题 谷歌推出了百分比布局 本人有使用 但是百分比布局在部分时候适配并不是那么完美 偶
  • docker(六)数据挂载之数据卷

    docker容器运行时 是有一个可写入层的 如果我们把容器运行时的数据写在可写入层 会有以下问题 当容器停止运行时 写入的数据会丢失 你也很难将这些数据从容器中取出来给另外的应用程序使用 容器的可写入层与宿主机是紧密耦合的 这些写入的数据在
  • 指针的进阶【下篇】

    文章目录 8 指向函数指针数组的指针 9 回调函数 8 指向函数指针数组的指针 请看代码与注释 int Add int x int y return x y int Sub int x int y return x y int main i
  • Ubuntu22.04.1 Server版本 配置C++开发环境----笔记

    远程ssh 没记错在安装 server版的时候是可以选的 如果没有就执行安装命令 sudo install openssh server y 下载完成后配置端口22 vim etc ssh ssh config 重启ssh sudo ser
  • 利用回调获取自拟定Dialog的返回值

    这里要讲的是如何利用回调获取自拟定DiaLog的返回值 首先看下问题的背景 我们经常会用到Dialog 系统提供了一些常用的Dialog 可以参考这篇博客 点击打开链接 那其中一个常用Dialog做讲解 span style font si
  • java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...

    Java调用批处理或可执行文件 用Java编写应用时 有时需要在程序中调用另一个现成的可执行程序或系统命令 这时可以通过组合使用Java提供的Runtime类和Process类的方法实现 下面是一种比较典型的程序模式 Process pro