2016-04-06 13 views
0

Vielleicht gibt es erhebliche Unterschiede zwischen exec auf Linux im Vergleich zu Windows laufen, jenseits der offensichtlichen, also habe ich eine Demo ergriffen, aber es stürzt auch ab, wenn eine cmdarray von "Hallo Welt" gesendet.richtige Verwendung zu echo mehrere Befehle mit exec

Was ist die korrekte Verwendung für ein "Befehlsarray" von "Echo" -Befehlen?

Absturz:

run: 
echo hello world...? cannot open notepad 
java.io.IOException: Cannot run program "echo hello world 1": error=2, No such file or directory 
BUILD SUCCESSFUL (total time: 0 seconds) 

angepasst Code:

package com.tutorialspoint; 

public class RuntimeDemo { 

    public static void main(String[] args) { 
     try { 
      // create a new array of 2 strings 
      String[] cmdArray = new String[2]; 

      // first argument is the program we want to open 
      cmdArray[0] = "echo hello world 1"; 

      // second argument is a txt file we want to open with notepad 
      cmdArray[1] = "echo hello world 2"; 

      // print a message 
      System.out.println("echo hello world...? cannot open notepad"); 

      // create a process and execute cmdArray 
      Process process = Runtime.getRuntime().exec(cmdArray); 

      // print another message 
      System.out.println("example.txt should now open."); 

     } catch (Exception ex) { 
      System.out.println(ex); 
     } 
    } 
} 

siehe auch: sending a cmdarray for exec to process -- hello world

+1

Siehe auch [Wenn Runtime.exec() nicht] (http://www.javaworld.com/article/2071275/core-java/when-runtime- exec --- won-t.html) für viele gute Tipps zur korrekten Erstellung und Handhabung eines Prozesses. Dann ignoriere es auf 'exec' und verwende einen' ProcessBuilder' um den Prozess zu erstellen. –

Antwort

0

Nicht die beste Antwort:

package com.tutorialspoint; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import static java.lang.System.out; 

public class RuntimeDemo { 

    public static void main(String[] args) throws InterruptedException, IOException { 
     String[] cmd = {"echo", "hello world"}; 
     Process process = Runtime.getRuntime().exec(cmd); 
     BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     String line = null; 
     while ((line = input.readLine()) != null) { 
      out.println(line); 
     } 
    } 
} 

Auf jeden Fall Interesse an einer Erklärung einer d besser antworten. Wie senden Sie mehrere Befehle?

siehe:

https://stackoverflow.com/a/3032498/262852