不想做厨师的程序员不是好农民 2016-11-11 07:35 采纳率: 0%
浏览 2506

java执行linux命令,但是打印不了命令结果

  // 执行linux命令方法
    private boolean excuteLiuxOrde3r(String command) {
        logger.info("执行命令:" + command);
        boolean returnFlag = false;
        StringBuilder sb = new StringBuilder();
        Process process= null;
        try {
            process = Runtime.getRuntime().exec(command);
            returnFlag = true;
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String lo;
            while ((lo = bufferedReader.readLine()) != null) {
                sb.append(lo);
                sb.append("\n");
            }
            logger.info("执行命令结果:" + sb.toString());
            process.waitFor();
            // 等待n秒后destory进程
        }catch (Exception e){
            e.printStackTrace();
        }
        process.destroy();
        return returnFlag;
    }

我正常输入传入命令:wc -l [filename]

结果应该打印:
执行命令结果:35653232 filename
但是经过测试并不能!请问下给大神这是为嘛?

  • 写回答

2条回答 默认 最新

  • 童无心 2016-11-11 07:44
    关注

    参考我的代码 改一下

    public static void exec(String sh){
            InputStream in = null;  
            try {  
                Process pro = Runtime.getRuntime().exec(new String[]{
                    "sh",
                    "-c",
                    sh
                });  
                in = pro.getInputStream();  
                BufferedReader read = new BufferedReader(new InputStreamReader(in));  
                String result = null;  
                System.out.println("sh---"+sh+"----start");
                while((result = read.readLine()) != null){
                    System.out.println("INFO:"+result);  
                }
    
                read = new BufferedReader(new InputStreamReader(pro.getErrorStream()));;
                result = null;
                while((result = read.readLine()) != null){
                    System.out.println("ERROR:"+result);  
                }
                System.out.println("ip---"+sh+"----end");
                in.close();
                pro.getErrorStream().close();
    
            } catch (Exception e) {  
                //e.printStackTrace();  
            }  
        }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名