Ah, but it works like i think it does !
Here 's tt.pl :
use strict ;
use warnings;
use Win32::Job ;
my $job = Win32::Job->new;
my $tmout = 20 ;
my %opt = ( stdout => 'out.txt' , stderr => 'err.txt' ) ;
$job -> spawn ( 'c:/perl/bin/perl.exe', 'perl sp.pl',\%opt) ;
my $ok=$job->run($tmout, 0) ;
$ok ? print "ended before $tmout sec" : print "had to kill it" ;
And here the spawned process :
#!perl
use warnings;
use strict ;
select STDERR ;
$|=0 ;
select STDOUT ;
$|=0 ;
my $i = 0 ;
while ($i < 5 ) {
print STDOUT "Do the hammerlock\n" ;
print STDERR "Do the hammerlock you turkeynecks !\n" ;
sleep 2;
$i++ ;
}
Here is the out.txt file :
Do the hammerlock
Do the hammerlock
Do the hammerlock
Do the hammerlock
Do the hammerlock
And the err.txt :
Do the hammerlock you turkeynecks !
Do the hammerlock you turkeynecks !
... (uh, well, you get it ... )
With your example it needs print \"ran ok\" and the full path to the perl binary, but test.out is still empty, i can't figure out why ... Something lame with the windows command line, maybe ...
Anyway Win32::Job does it, as the above example shows, and without much of hassle. It gives you the handler feature if you need it and "job" control and all other windows gimmicks.
zlr
well, now let's try to understand this other use threads heavy wizardry stuff :)
|