Capturing stdout when calling Runtime.exec
java, runtime, shell
Solution
You need to capture both the std out and std err in the process. You can then write std out to a file/mail or similar.
See this article for more info, and in particular note the `StreamGobbler` mechanism that captures stdout/err in separate threads. This is essential to prevent blocking and is the source of numerous errors if you don't do it properly!
Problem
When experiencing networking problems on client machines, I'd like to be able to run a few command lines and email the results of them to myself. I've found Runtime.exec will allow me to execute arbitrary commands, but Collecting the results in a String is more interesting. I realize I could redirect output to a file, and then read from the file, but my spidey sense is telling me there's a more elegant way of doing it. Suggestions?