[sf-perl] Spawning external program within Perl

Michael Friedman friedman at highwire.stanford.edu
Wed Nov 8 10:07:24 PST 2006


Yeah, exec() terminates the current program in the process.

What I've done in the past is fork() and then exec(). Something like:


my $pid = fork();
unless (defined $pid) {
     # we're the child process
     exec();	
}

# we're the parent process, keep going
# you can poll $pid to see how the child is doing, if you like


That way your main program keeps going but the child can convert  
itself into the exec'd program.

There are issues around certain shared resources and fork(), just so  
you know, so if you're doing anything more than just exec() in the  
child you should go read up about it and test.

-- Mike

On Nov 8, 2006, at 9:59 AM, Loo, Peter # PHX wrote:

>
> Hi David,
>
> I did try exec() and system().  However, exec() stops my calling  
> program
> while system() waits for the called program to finish.
>
> Peter
>
> -----Original Message-----
> From: sanfrancisco-pm-bounces 
> +peter.loo=source.wolterskluwer.com at pm.org
> [mailto:sanfrancisco-pm-bounces 
> +peter.loo=source.wolterskluwer.com at pm.or
> g] On Behalf Of David Fetter
> Sent: Wednesday, November 08, 2006 10:55 AM
> To: San Francisco Perl Mongers User Group
> Subject: Re: [sf-perl] Spawning external program within Perl
>
> On Wed, Nov 08, 2006 at 10:48:11AM -0700, Loo, Peter # PHX wrote:
>>
>>    Hi,
>>
>>    I was wondering if there is a built-in Perl module that would  
>> allow
> me to
>>    spawn  an external program and not wait for it to complete.   
>> What I
> am
>>    attempting to do is, I am checking within a database for a
> condition and
>>    when  the  condition  is met, I want to call an external Perl
> program.
>>    However, I don't want to wait for the external program to complete
> before
>>    moving on to my next step within my program.
>
> About ten seconds of searching with perldoc -q led me to
>
> perldoc -f exec
>
> What did you try before asking here?
>
> Cheers,
> D
> --
> David Fetter <david at fetter.org> http://fetter.org/
> phone: +1 415 235 3778        AIM: dfetter666
>                               Skype: davidfetter
>
> Remember to vote!
> _______________________________________________
> SanFrancisco-pm mailing list
> SanFrancisco-pm at pm.org
> http://mail.pm.org/mailman/listinfo/sanfrancisco-pm
>
>
> This E-mail message is for the sole use of the intended recipient 
> (s) and
> may contain confidential and privileged information.  Any unauthorized
> review, use, disclosure or distribution is prohibited.  If you are not
> the intended recipient, please contact the sender by reply E-mail, and
> destroy all copies of the original message.
> _______________________________________________
> SanFrancisco-pm mailing list
> SanFrancisco-pm at pm.org
> http://mail.pm.org/mailman/listinfo/sanfrancisco-pm

---------------------------------------------------------------------
Michael Friedman                     HighWire Press
Phone: 650-725-1974                  Stanford University
FAX:   270-721-8034                  <friedman at highwire.stanford.edu>
---------------------------------------------------------------------




More information about the SanFrancisco-pm mailing list