Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Execute command, show realtime output and get exit code

by afunix (Initiate)
on Nov 01, 2011 at 12:24 UTC ( #935100=perlquestion: print w/replies, xml ) Need Help??
afunix has asked for the wisdom of the Perl Monks concerning the following question:


I need to execute command, display it's output and get exit code.
open(X, '-|', 'cmd') is a good one, but it returns pid in this form and $? is zero, so I can't get a return code.
`cmd` can do everything, but it returns output after command was executed, and I need to display output and put it into log file, just like tee.
There is one more way, the most complicated:
my $pid = open(PIPE, '-|'); die "open(): $?" unless (defined $pid); if ($pid) { while (<PIPE>) { print $_; } close(PIPE); } else { die "system(): $!" unless (system($cmd)); die "failed to execute: $!" if ($? == -1); die "signal: ". ($? & 127) if ($? & 127); die "exit code: ". ($? >> 8) if ($? >> 8); }
There is just one problem. I need to deliver $? into parent process...

So, dear monks, is there any way to receive command output in a realtime and get it's exit code in some easy way?

Replies are listed 'Best First'.
Re: Execute command, show realtime output and get exit code
by Eliya (Vicar) on Nov 01, 2011 at 19:31 UTC
    ...and $? is zero, so I can't get a return code.

    close waits for the subprocess and sets $?:

    my $pid = open X, '-|', 'echo foo; exit 42' or die $!; my $out = <X>; my $ok = close X; print STDERR "out=$out"; printf STDERR "\$?=%s\n", $? >> 8 unless $ok; __END__ out=foo $?=42

    See close for details.

      Thanks! You really prevented me from inventing a wheel :)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://935100]
Approved by Corion
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2017-02-22 09:30 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (325 votes). Check out past polls.