java执行linux和window命令续集----应用ProcessBuilder

本文介绍了在Java中如何使用ProcessBuilder类执行Linux和Windows命令,解决了在迁移服务器后遇到的进程阻塞问题。ProcessBuilder允许重复调用start()方法创建新进程,并且可以合并标准输出和错误输出。
摘要由CSDN通过智能技术生成

上一篇地址:https://mp.csdn.net/postedit/83857969

     在上次命令中,一直没出现问题,直到前段时间公司所有服务器迁移,项目也随着迁移,介于服务器性能上存在的差异,在执行 while ((rspLine = in.readLine()) != null) {}中出现了进程阻塞,形成死循环状态,其实呢linux命令已经正确执行完,.getInputStream()发生阻塞。找了很多方法不断试,找到了ProcessBuilder,

    ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处来实现进程的控制管理。 
   每个 ProcessBuilder 实例管理一个进程属性集。它的start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。
下面是代码:

//下面是linux命令,window命令只需要把下面 String[] command = {"/bin/sh","-c",cmds}的"/bin/sh"变成"cmd"。

public static int executeNewFlow(String cmds) {
        logger.info("命令:"+cmds);
        int iden =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值