不想做厨师的程序员不是好农民 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 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?