Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: Perl wait vs Unix ksh wait (spawn)

by tye (Cardinal)
on Oct 31, 2007 at 18:22 UTC ( #648320=note: print w/ replies, xml ) Need Help??


in reply to Re: Perl wait vs Unix ksh wait (spawn)
in thread Perl wait vs Unix ksh wait

Okay, a close approximation to system(1,...) for less fortunate builds of Perl is:

sub spawn { my( $cmd )= @_; die "Usage: spawn($cmdLine) or spawn([$cmd,@args])" if 1 != @_; die "You don't need this; use system(1,...) instead." if $^O =~ /win32/i; # Not an accurate test my $cpid= fork(); die "Can't fork: $!\n"; if ! defined $cpid; return $cpid if $cpid; if( ! ref $cmd ) { exec( $cmd ); } elsif( 1 == @$cmd ) { $cmd= $cmd->[0]; exec( $cmd $cmd ); } else { exec( @$cmd ); } die "exec failed: $!\n"; }

But note that system(1,...) has some non-trivial advantages still; I didn't replicate the "pipe to child process for making 'exec fails' cases" saner.

So you can use spawn($cmd) in place of system(1,$cmd) in the code I provided in the previous node. I didn't write spawn() to handle Win32 because it was a quick hack.

- tye        


Comment on Re^2: Perl wait vs Unix ksh wait (spawn)
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://648320]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (10)
As of 2015-07-06 17:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (77 votes), past polls