 <p>You should handle output of process (both of stdout, stderr ). Because, these outputs will be redirected to the parent process through three streams (getOutputStream(), getInputStream(), getErrorStream() ). If not handled, it will block when child process produces output.</p> <p><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html" rel="nofollow">Process documentation</a></p> <blockquote> <p>Some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.</p> </blockquote>