Looks like you may be blocking the operator thread with the p.waitFor() and
the rest of the code
to process the child process output.

Try using a separate thread to handle the child as described, for example,
here:
http://stackoverflow.com/questions/26319804/adapting-c-fork-code-to-a-java-program

But avoid calls like Process.waitFor() and Thread.join() which can
potentially block for a long time.

Ram

On Thu, Feb 9, 2017 at 11:02 AM, Chris Benninger <[email protected]>
wrote:

> Hi,
>
> I have a little bit of a weird use-case but I'm running a script from
> within an operator which forks a sub process using & (I know I know). Im
> porting this from spark as a PoC and in Apex It seems to be sending the
> parent shell process a SIGTERM resulting in a 143. When I remove the fork
> (altering the output) it all works fine however.
>
> my code:
>
> String cmd = "bash myscript.sh"
>
> Process p = Runtime.getRuntime().exec(cmd, null, workingDir.toFile());
> p.waitFor();
>
> BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(p.
> getInputStream()));
> String line;
> while ((line = stdoutReader.readLine()) != null) {
>     System.out.println(line);
> }
>
> BufferedReader stderrReader = new BufferedReader( new InputStreamReader(p.
> getErrorStream()));
> while ((line = stderrReader.readLine()) != null) {
>     System.out.println(line);
> }
>
> int retValue = p.exitValue();
> System.out.println("Exit code: "+retValue);
>
> Any help appreciated.
>

Reply via email to