Flowdock
popen3(*cmd) private

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.

Show source
Register or log in to add new notes.