capturing stdout and stderr?

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

I'm asking where do I start my research, recommendations for a module
or function. I'm not asking for code that does what I need.

I have a need to start a command then read the command's stdout and
stderr streams, capturing each line individually, prepending 'STDOUT:'
or 'STDERR:' to the line depending on which stream the line came from,
then writing the line to a central log file.

In C I would fork(), exec(), then from the parent just use select()
to grab each line that comes from the child.

Is the same approach the simpleist way in Perl or should I look at
IPC::Open3 or IPC::Run?

This script needs to run on linux, HP-UX, Solaris, IRIX, Mac OS X,
cygwin/win32, and cygwin/win64.

Thanks for your thoughts.


Re: capturing stdout and stderr?

Quoted text here. Click to load it

Any of those approaches would be fine. If you're a C programmer, you may
find an explicit pipe/fork/exec/select sequence easiest to understand;
the various modules that do this are just wrappers around that.
Personally I would probably use IPC::Run.


Site Timeline