I’m trying to run an external program with arguments. The program can take different types of arguments, for instance
avl tip.avl
or avl < test.ops
I can get avl tip.avl
running through
try {
String[] list = {"avl", "test_0.avl"};
ProcessBuilder pb = new ProcessBuilder(list);
pb.command(list);
final Process p = pb.start();
BufferedReader br = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception ex) {
System.out.println(ex);
}
but when I try
String[] list = {"avl", "<", "test_0.ops"};
ProcessBuilder pb = new ProcessBuilder(list);
pb.command(list);
final Process p = pb.start();
the "<"
does not get sent as an argument, but as an input after the program runs. avl < test.ops
works ok when I try it from command line, but cant get it to work through ProcessBuilder
.
I think avl tip.avl
works because running avl tip.avl
is the same as just running avl
and then typing tip.avl
. Which is what ProcessBuilder
seems to be doing actually ...
I assumed the arguments would be passed all at one. What would be the right way of doing what the command prompt input does avl < test.ops
+ ENTER