2017-06-15 20 views
0

我试图得到一个过程中,我推出使用进程生成但是输出似乎看起来像是从AppleScript的东西,而不是过程的实际输出的输出:过程的InputStream没有返回过程输入(OSX)

代码:

public static void main(String[] args) { 
    System.out.println(getJavaOutput()); 
} 

public static String getJavaOutput() { 
    try { 
     //kill -9 $(ps -p $PPID -o ppid=) 
     String output = ""; 
     ProcessBuilder macBuilder = new ProcessBuilder("osascript", "-e", 
       "tell application \"Terminal\" to do script \"jps -lV && exit\""); 
     Process p2 = macBuilder.start(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(p2.getInputStream())); 
     String line; 
     while((line = reader.readLine()) != null){ 
      output += line + System.getProperty("line.separator"); 
     } 
     return output; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

预期输出:

2680 sun.tools.jps.Jps 
1289 

实际输出:

tab 1 of window id 742 

回答

0

你的方法更改为:

public static String getJavaOutput() { 
    try { 
     String output = ""; 
     ProcessBuilder macBuilder = new ProcessBuilder("/bin/bash", "-c", "jps -lV && exit"); 
     Process p2 = macBuilder.start(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(p2.getInputStream())); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      output += line + System.getProperty("line.separator"); 
     } 
     return output; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
}