in reply to When starting a process, at what point does "open()" return?
And you're using a flakey executable because...? What makes you sure that you're getting stuck in the open statement? (Showing us some code around the open statement might help.)
As we're using about 30 of these processes for testing, we would like to determine which executable is causing the problem.
Do you mean you have about 30 different flakey executables, or that you are trying to run 30 instances of the same piece of crap? Are you talking about looping 30 times over an "open; do something; close" type of block, or are you trying to have 30 pipeline file handles open at once? (Don't some OS's have a problem with opening too many file handles?)
If you haven't tried this yet, you could do something like:
(or, some variant that would be more relevant to your needs). If all the processes start and you see how long each one took, then it must be some other stage in your script where you hang (i.e. a read or write, or maybe something unrelated to the pipeline process). If the loop doesn't complete, you'll at least know where the problem starts. Then you'll want to see whether the problem always happens at the same iteration.$|++; # turn off output buffering on STDOUT my @pipeproc = ("flakey_writer |","| flakey_reader",...); for (0..29) { my $start = time(); my $pid = open( FH, $pipeproc[$_] ); my $now = time(); print "opening $pipeproc[$_] returned $pid in ",$now-$start," sec\n" +; close FH; }
Maybe you've been over this ground already, but your post didn't really give enough information.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: When starting a process, at what point does "open()" return?
by tid (Beadle) on Aug 20, 2003 at 23:55 UTC | |
by graff (Chancellor) on Aug 21, 2003 at 01:01 UTC | |
by tid (Beadle) on Aug 22, 2003 at 02:18 UTC |