Bill Luebkert wrote:
> Aclhk Aclhk wrote:
>> i want to kill spawned process and its child if image*.tiff exists or 
>> timeout.
>> c:\\test\\a.pl is to generate the tiff by print the acrobat reader to 
>> default printer which creates the tif file.
>>
>> i have tried the following without success.
>>
>> use Win32::Job;
>>
>> my $job = Win32::Job->new;
>>
>> # Run for 10 seconds
>> print "start ......";
>> #$job->spawn($Config{perlpath}, "perl");
>> $job->spawn($Config{perlpath}, "perl c:\\test\\a.pl");
>> #$job->run(10);
>>
>>
>>   $ok = $job->watch( sub {
>>         return 1 if ((glob "image*.tiff") || sleep (30));
>>    }
>> , 1);
>>
>> If image*.tiff is changed to an file already existed, the spawn process 
>> is terminated very quickly. It could not detect image*.tiff if it is 
>> generated by a.pl (by printer driver). it times out after 30 secs.
>>
>> I am a newbie to perl. pls kindly advise. if you know win32::process, 
>> pls advise code, too.
> 
> This seems to work (assuming the TIFF is generated in the current working
> dir and the TIFF created is named something like 'image1.tiff':
> 
> use strict;
> use warnings;
> use Config;
> use Win32::Job;
> 
> my $MAX_WAIT = 10;    # seconds to wait for TIFF
> 
> my $job = Win32::Job->new;
> $job->spawn($Config{perlpath}, 'perl a.pl');
> 
> my $start = time;
> 
> # assumes that a TIFF file is created in this (.) dir
> 
> print "watch for TIFF\n" if $debug;
> $job->watch(
>    sub {
>      return 1 if glob ('image*.tiff');
>      my $diff = time - $start;
>      if ($diff > $MAX_WAIT) {
>        print "Timeout waiting for TIFF - exiting\n";

I left the kill part out - it would go here:

>        return 1;
>      }
>      return 0;
>    }, 1);
> 
> __END__
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to