是在linux下java XXXX &运行,怎么捕获控制台的输出?

解决方案 »

  1.   

    在java程序运行时控制台的输出也就是java程序的输出可以通过重定向实现
      

  2.   

    java程序是在后台运行的。这时在控制台输出不会重定向。
      

  3.   


    接收键盘的输入
            BufferedReader stdin = 
                new BufferedReader(
                    new InputStreamReader(System.in));
      

  4.   

    可是有些输出是其他程序打印在控制台的,并不全是System.in
      

  5.   

    楼主意思是,你的java要俘获另一个控制台的输出?
      

  6.   

    C里面用 pipe(int[]),再将pipe的输入与stdout(也就是1)进行dup2,就可以获得标准输出。
    可是在java中System.Out似乎跟当前进程相关。
      

  7.   

    转帖import java.io.*;public class CaptureOutput
    { public static void main(String[] args)
     {
     try
    {
     String cmd = "ping "; String param = args.length == 1 ? args[0]:"192.168.2.26";
     Process child = Runtime.getRuntime().exec( cmd + param ); InputStream child_in = child.getInputStream();  int c;
    while ((c = child_in.read()) != -1)
    {
    System.out.print((char)c);
    }
    child_in.close();
    }catch (IOException e)
     {
    System.err.println(e);
    }
    }
    }
      

  8.   

    谢谢StockCsdn,不过要捕获的输出的程序在我程序运行之前已经执行了,并不允许我去调用
      

  9.   

    修改后台程序该那些输出到文件中,如使用Log4j等:)
    也可以考虑使用管道流PipeInputStream,PipeOutputStream。