----- Original Message ----- 
From: "LI NGOK LAM" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, July 14, 2003 6:05 AM
Subject: How to run a shell command but not waiting for the result ?


I've tried to use exec, system, and ``. And also with and without $| = 1;
but seems unable to do what I want.

What I want to do is suppose like this :

print "Start";
exec "notepad";
print "End";

but I found my results are :

If I can see "End", the notepad won't come,
If I can run the notepad, I can't see the End
until I close the notepad.

So what can I do to make it possible to run the notepad, 
but then just leave it alone and go on with the rest of the
code ?

TIA

Hi -

If you have Perl 5.8, try threads:

use strict;
use warnings;
use threads;

my $thr = threads->new(\&notepad);
$thr->detach;

my $wait = 10;
while ($wait--) {
    print "still alive $wait\n";
    sleep 1;
}
print "ending\n";

sub notepad
{
    system 'notepad';
}

see: perldoc perlthtut
(or as an html file under your html/lib/Pod
directory in your perl install tree.)

You first try won't work:

exec => NEVER returns (overlays you with
  notepad);
system => puts you into a wait till notepad finishes.

Aloha => Beau;
== please visit ==
<http://beaucox.com> => main site
<http://howtos.beaucox.com> => howtos
<http://PPM.beaucox.com> => perl PPMs
<http://CPAN.beaucox.com> => CPAN
== thank you ==



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to