자바 실행 시스템 명령 행 및 반환 값 가 져 오기

4251 단어 Java
원본 URL:http://accptlq.iteye.com/blog/1490890
방법 1
    Process p = Runtime.getRuntime().exec("ping 127.0.0.1 -t");
    Process p = Runtime.getRuntime().exec("javac");
    InputStream is = p.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    String line;
    while((line = reader.readLine())!= null){
        System.out.println(line);
    }
    p.waitFor();
    is.close();
    reader.close();
    p.destroy();

방법 2
package com.cmd;

import java.lang.*;
import java.io.*;

public class Process {
  public static void main(String[] args) {

   	java.lang.Process process = null;
      try {
          process = Runtime.getRuntime().exec("net user");
          ByteArrayOutputStream resultOutStream = new ByteArrayOutputStream();
          InputStream errorInStream = new BufferedInputStream(process.getErrorStream());
          InputStream processInStream = new BufferedInputStream(process.getInputStream());
          int num = 0;
          byte[] bs = new byte[1024];
          while((num=errorInStream.read(bs))!=-1){
              resultOutStream.write(bs,0,num);
          }
          while((num=processInStream.read(bs))!=-1){
             resultOutStream.write(bs,0,num);
          }
          String result=new String(resultOutStream.toByteArray());
          System.out.println(result);
          errorInStream.close(); errorInStream=null;
          processInStream.close(); processInStream=null;
          resultOutStream.close(); resultOutStream=null;
      } catch (IOException e) {
          e.printStackTrace();
      }finally{
          if(process!=null) process.destroy();
          process=null;
      }
    }
    
}

Runtime.exec()는 command line 명령 을 직접 실행 하 는 것 과 같 지 않 습 니 다!아,나 는 여기 서 고생 한 셈 이다.Runtime.exec()는 한계 가 있 습 니 다.일부 명령 에 대해 서 는 command line 의 내용 을 String 매개 변수 로 exec()에 직접 전달 할 수 없습니다.예 를 들 어 방향 을 바 꾸 는 등 명령 입 니 다.예 를 들 어: 
javap -l xxx > output.txt 
이 때 exec 의 두 번 째 리 셋 을 사용 해 야 합 니 다.즉,input 매개 변 수 는 String[]입 니 다.
Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c","javap -l xxx > output.txt"});
 
import java.io.InputStreamReader;  
import java.io.LineNumberReader;  
import java.util.ArrayList;  
import java.util.List;  
  
  
public class test{  
    /**  
     *   shell    
     * @param shell      shell    
     */    
     public static void execShell(String shell){  
    
        try {    
            Runtime rt = Runtime.getRuntime();    
            rt.exec(shell);    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
     }

    /**  
     *   shell  
     *   
     * @param shStr  
     *                 shell  
     * @return  
     * @throws IOException  
     */    
    public static List runShell(String shStr) throws Exception {    
        List strList = new ArrayList();    
    
        Process process;    
        process = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",shStr},null,null);    
        //process = Runtime.getRuntime().exec(shStr);    
        InputStreamReader ir = new InputStreamReader(process    
                .getInputStream());    
        LineNumberReader input = new LineNumberReader(ir);    
        String line;    
        process.waitFor();    
        while ((line = input.readLine()) != null){    
            System.out.println(line);  
            strList.add(line);    
        }    
            
        return strList;    
    }
      
    public static void main(String []arge)throws Exception {  
          
        test t=new test();  
        t.runShell("/home/ubuntu/soft/tomcat/bin/startup.sh")  
    } 
String[] cmd = new String[]{"/bin/sh","-c", " ps -ef"};
Process ps = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
    sb.append(line).append("
"); } String result = sb.toString(); System.out.println(result);

좋은 웹페이지 즐겨찾기