我在perl中编写了一个服务器,等待tcp连接.每次服务器收到一个,它就会分配一个负责它的新孩子并继续监听另一个连接.(所以它不能等待SIGCHILD.)孩子做它应该做的事情并退出,但继续"活着"作为一个僵尸.请问有什么解决方案?
设置$SIG{CHLD} = 'IGNORE';为让系统自动为您处理它们.
或设置$SIG{CHLD}为子例程并waitpid:
use POSIX qw( WNOHANG );
$SIG{CHLD} = sub {
while( ( my $child = waitpid( -1, WNOHANG ) ) > 0 ) {
print "SIGNAL CHLD $child\n";
}
};
Run Code Online (Sandbox Code Playgroud)
如果你真的想了解它是如何工作的(你当然可以!:),你应该阅读perlipc
Stack Overflow上还有更多信息
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |