method

popen3

v1_9_1_378 - Show latest stable - Class: Open3
popen3(*cmd)
public

Open stdin, stdout, and stderr streams and start external executable. In addition, a thread for waiting the started process is noticed. The thread has a thread variable :pid which is the pid of the started process.

Non-block form:

stdin, stdout, stderr, wait_thr = Open3.popen3(cmd)
pid = wait_thr[:pid]  # pid of the started process.
...
stdin.close  # stdin, stdout and stderr should be closed in this form.
stdout.close
stderr.close
exit_status = wait_thr.value  # Process::Status object returned.

Block form:

Open3.popen3(cmd) { |stdin, stdout, stderr, wait_thr| ... }

The parameter cmd is passed directly to Kernel#spawn.

wait_thr.value waits the termination of the process. The block form also waits the process when it returns.

Closing stdin, stdout and stderr does not wait the process.