Hi Chuck:
I don't think exec will do the right thing.
According to perldoc.perl.org, exec will stop the current process to
execute another one while
system will do a fork() first, so system will be your right choice I think.
This is a short example I did recently:
**********************************************
main program starts here.
if you system(another program in the foregroud) {
you will have to wait until the program finishes.
}
elsif you system(another program in the backgroud) {
you will get your main program run ahead without having to
wait its returen
}
************************************************
Hope this will give you some clue.
On Thu, Feb 19, 2009 at 8:02 AM, Chas. Owens <[email protected]> wrote:
> On Wed, Feb 18, 2009 at 12:14, Chuck <[email protected]> wrote:
> > Hello,
> >
> > We have a GUI where, if a button is clicked, Putty (the remote access
> > program) is launched using
> >
> > System("C:\\Progra~1\\Putty\\putty.exe");
> >
> > is launched. However, when this is executed, the original GUI freezes,
> > and we cannot use it unless we close Putty. We tried using the fork()
> > command like this:
> >
> > my $pid = fork()
> >
> > if ( $pid == 0 ) {
> > System("C:\\Progra~1\\Putty\\putty.exe");
> > exit 0;
> > }
> >
> > Now, if we run it, we can use the original GUI while Putty is running,
> > but when we close Putty, we get an error message along the lines of,
> > "The Perl Command Line Interpreter has stopped working" and the GUI
> > kills itself. Does anyone know what the problem might be, or how we
> > can launch Putty without freezing the GUI or causing it to kill itself
> > after closing Putty?
> >
> > Thanks a lot.
>
> Try replacing the system with exec*. The exec function will replace
> the currently running process (Perl) with the new one (Putty).
>
> * http://perldoc.perl.org/functions/exec.html