Let's see if I got this right.
- You have one process that starts a second asynchronous process (that may start other child processes).
- And once it has started that first process, you want it to both watch for the creation of a killfile (produced by yet another asynchronous process).
- And at the same time, be able to continue doing other things concurrently with watching for this kill file so that it can kill the process tree it started.
I guess the author would say: I didn't design the watch method for that scenario.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] |
Create new process P
while(1) {
read next task
process task
if(P has ended) {
evaluate result of P
Create new process P
} elsif(P should be killed) {
kill P and its children
Create new process P
}
}
In my original solution, 'create new process' was done with system(1,...) and killing was done with kill -9.
--
Ronald Fischer <ynnor@mm.st>
| [reply] [d/l] |
my $job = Win32::Job->new;
my $pid = $job->spawn();
while( 1 ) {
## read and process next task
sleep 3 while $job->status->{ $pid }{ exitcode } == $STILL_RUNNING
+ ## 259??
and not -e 'killfile';
$job->kill if $job->status->{ $pid }{ exitcode } == $STILL_RUNNING
+;
$job = Win32::Job->new;
$pid = $job->spawn( ... )
}
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] [select] |