【发布时间】:2012-01-07 16:19:20
【问题描述】:
部分代码为:
sub _getPages {
my $self = shift;
my $rel_url = lc(shift);
my @turls = ();
my $urls = [];
my $ipc_share = tie $urls, 'IPC::Shareable',undef, { destroy => 1 };
foreach my $stag (@{$self->{SUPP_TAGS}}) {
push(@{$urls}, map { lc($self->_normalizeSupportURL($_->url(),
$self->{MECH_O}->getGlobalMechInstance()->uri->authority,
$self->{MECH_O}->getGlobalMechInstance()->uri->scheme)) }
grep { ((index($_->url,$rel_url) > -1) || ($_->url =~ m{^/})) &&
$_->url !~ m/answer|mailto:/i }
$self->{MECH_O}->getGlobalMechInstance()->find_all_links( text_regex => qr/$stag/i ),
$self->{MECH_O}->getGlobalMechInstance()->find_all_links( name_regex => qr/$stag/i ),
$self->{MECH_O}->getGlobalMechInstance()->find_all_links( url_abs_regex => qr/$stag/i ));
}
@{$urls} = uniq(@{$urls});
foreach my $url (@{$urls}) {
if (!exists($self->{UNQ_URLS}->{lc($url)})) {
$self->{UNQ_URLS}->{lc($url)} = 1;
$self->{SUPP_PROC}->start and next;
if (eval {$self->{MECH_O}->getGlobalMechInstance()->get($url); } ) {
push(@{$urls}, map { lc($self->_normalizeSupportURL($_->url(),
$self->{MECH_O}->getGlobalMechInstance()->uri->authority,
$self->{MECH_O}->getGlobalMechInstance()->uri->scheme)) }
grep { ((index($_->url,$rel_url) > -1) || ($_->url =~ m{^/}) ||
$_->url =~ m/\d+\.\d+\.\d+\.\d+/ ) &&
$_->url !~ m/answer|mailto:/i }
$self->{MECH_O}->getGlobalMechInstance()->find_all_links( text_regex => qr/chat/i ),
$self->{MECH_O}->getGlobalMechInstance()->find_all_links( name_regex => qr/chat/i ),
$self->{MECH_O}->getGlobalMechInstance()->find_all_links( url_abs_regex => qr/chat/i ));
}
$self->{SUPP_PROC}->finish;
}
}
$self->{SUPP_PROC}->wait_all_children;
return uniq(@{$urls});
}
基本上,我想做的是在进程之间共享$urls,这样我就可以向其中添加网址,但我不断得到:
无法创建信号量集:设备上没有剩余空间
这是做内核(Ubuntu 10.04 LTS)参数(SEMMNI,SEMMNS)的事情。 我增加了它们,但它仍然没有真正有用,所以我可能在这里做错了。
还有其他方式(可能是Storable 相关解决方案...)在进程之间共享数组吗?
谢谢,
【问题讨论】:
-
使用 'mount' 我看到了这些: /dev/shm 上没有类型 tmpfs (rw,nosuid,nodev) /var/run 上没有类型 tmpfs (rw,nosuid,mode=0755) /var/lock type tmpfs (rw,noexec,nosuid,nodev) none /lib/init/rw type tmpfs (rw,nosuid,mode=0755