tange has asked for the wisdom of the Perl Monks concerning the following question:
open3 only takes STDIN, STDOUT and STDERR. If the command being run uses other file descriptors then open3 cannot capture those:
I have looked into IPC::Run::run which seems to be able to deal with that, but I also need the PID and I found no way for IPC::Run::run to give me that. Also IPC::Run is not installed on many of the old distributions supported by GNU Parallel, whereas open3 is.echo foo # Can be captured echo foo >&2 # Can be captured echo foo >&3 # Cannot be captured (with open3)
How can I wrap open3 so that I can capture file descriptors 3..61 in the same way I can capture STDOUT and STDERR?
BackgroundThis is intended for a possible extension of GNU Parallel, so you can do:
without having the output from different jobs mixed. Right now only STDOUT and STDERR are buffered and thus guaranteed not to mix.# Currently mixes output due to fd 3 not buffered parallel 'echo {} start >&3;sleep 10;echo {} end >&3' ::: a b c 3> +out.file
# This currently works parallel 'echo {} start >&2;sleep 10;echo {} end >&2' ::: a b c 2> +out.file
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: open3 but for n file descriptors
by Loops (Curate) on Jul 19, 2013 at 19:32 UTC | |
by tange (Initiate) on Jul 20, 2013 at 07:42 UTC | |
by tange (Initiate) on Jul 20, 2013 at 09:19 UTC |