On 12/8/05, Tamas Horvath <[EMAIL PROTECTED]> wrote:>> Runtime rtime =
Runtime.getRuntime();> Process child = rtime.exec("/bin/sh");>>>
BufferedWriter outCommand = new BufferedWriter(new>
OutputStreamWriter( child.getOutputStream()));>>>
outCommand.write("cd "+workhome +"; chmod +x run.bat;> exit\n");>
outCommand.flush();>> child.waitFor();> child.destroy();
this runs well the script gets the executable flag
rtime = Runtime.getRuntime();> child =
rtime.exec(workhome+"run.bat");>> BufferedReader input = new
BufferedReader(new> InputStreamReader( child.getInputStream()));>
BufferedReader inerr = new BufferedReader(new>
InputStreamReader(child.getErrorStream()));>> String line =
"";String lerr = "";> while ( (line = input.readLine()) != null ||
(lerr => inerr.readLine()) != null){> if (line != null &&
!line.equals("")) {> System.out.println(line);>
lerr = inerr.readLine();> }> if (lerr
!= null && !lerr.equals("")) System.out.println> (lerr);> }>>
child.waitFor();>
System.err.println("EV:"+child.exitValue());> child.destroy();
Here I only get the exit value, and nothing else
On 12/8/05, Thomas Down <[EMAIL PROTECTED]> wrote:>>> On 8 Dec 2005, at 14:16,
Tamas Horvath wrote:>> > I know this is not strictly BioJava, but here's my
problem:> > I create a shell script file that would run a GROMACS MD> >
simulationI generate the necessary input and config files> > I can make the
generated shell script runnable> > I cannot actually run the script from the
Java application.> > The script works fine from shell...> > The returned
exitValue is 255.> > Can anyone tell, what may I do?>> Could you give a few
more details about the code you're using to run> the shell script from Java?
Running external processes using Java's> Runtime.exec method isn't totally
trivial -- you usually need to> start some extra threads to handle the child
process' input and output.>> I presume your script is actually printing some
kind of error message> to standard error (or maybe standard out, if it's badly
behaved, but> these may be getting lost.>> BioJava has some convenience met!
hods that (usually) allow you to run> child processes without writing your own
multithreaded code. A> simple usage, that echoes the child's errors and
outputs to the> console, would be something like:>>
ProcessTools.exec(> new String[]
{"/path/to/my/script", "-> someArgument"},> null,
// no standard input> new
OutputStreamWriter(System.out),> new
OutputStreamWriter(System.err)> );>> You probably don't want to do
this in production code, but for> development and debugging it's quite useful.
For production use,> you'd normally use StringWriters to capture the child
process' output.>> Thomas.>
_______________________________________________
Biojava-l mailing list - [email protected]
http://biojava.org/mailman/listinfo/biojava-l