I have been through the StreamGobbler and I understand the usage and the reason on why it has been implemented. However the scenarios covered are only those wherein there could be an output from the command / handling errors.
I do not find any scenario wherein StreamGobbler is used to handle inputs. For example, in mailx , I have to specify the body of the email, which I have done in the following format
Process proc = Runtime.getRuntime().exec(cmd);
OutputStreamWriter osw = new OutputStreamWriter(proc.getOutputStream());
osw.write(mailBody);
osw.close();
How can this be handled through StreamGobbler, or it is not required to be handled through it?
Ideally, you would employ the
StreamGobbleron your error stream (in a separate thread) if you are already expecting something onInputStream, to look into when theprocess.waitFor()returns a non-zero value to find out the error message. If you are not interested in theInputStream, then you can read the ErrorStream directly in your code, once you are done with giving your inputs to the command.