Mail Archives: cygwin/2006/07/20/16:32:30
Christopher Faylor skrev:
> On Wed, Jul 19, 2006 at 12:08:24PM +0200, Corinna Vinschen wrote:
>>On Jul 18 17:45, Bruce Dobrin wrote:
>>> Hi,
>>> I stripped down the code to a small testable bit. The problem seems to
>>> occur when I reach 256 forks on a cygwin1.5.18 or 19 but not on my
>>> cygwin1.5.5. win2k system. The original code give the forked process
>>> time to finish, but it still looks like it eats it after about 256
>>> iterations ( it actually failed between 259 and 252 iterations, but
>>> it's pretty complicated so I'm not sure what else was happening).
>>>
>>> Here is my test code:
>>> dobrin AT tiburon:/tmp> cat test8.pl
>>> ################
>>> #!/usr/bin/perl -w
>>>
>>> use strict;
>>> my $pid;
>>>
>>> foreach my $incr (`seq 1 1 800`) {
>>>
>>> unless (defined ($pid = fork)) {
>>> die " cannot fork $!";
>>> }
>>> unless ($pid) {
>>> print " the sequence is $incr \n";
>>> exit;
>>> }
>>> print "pid is $pid\n";
>>> }
>>>
>>> ###############
>>>
>>> The error here is :
>>> cannot fork Resource temporarily unavailable at ./test8.pl line 11.
>>> panic: MUTEX_LOCK (45) [op.c:354].
Suggestion install a handler for sigchld and reap them as they die
see below.
Warning dont do to much in the handler.
see man perlvar for %SIG
#!/usr/bin/perl
use warnings;
use strict;
my $pid;
sub foo{
print ("process ",wait," died\n");
}
foreach my $incr (`seq 1 1 8`) {
$SIG{CHLD}=\&foo;
unless (defined ($pid = fork)) {
die " cannot fork $!";
}
unless ($pid) {
print " the sequence is $incr \n";
exit;
}
print "pid is $pid\n";
}
###############
--
Bengt-Arne Fjellner
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -