Hitting Ctrl-C while executing a native binary will interrupt the thread which should propagate to the native binary. However, the process.destroy() in the finally block doesn't run for interactive processes. When invoking a batch file on Windows the "do you want to terminate this batch process?" question seems to prevent some binaries from cleanly existing which leaves them in the background still gobbling the input stream.
Ensure the destroy is always run.