免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4561 | 回复: 4
打印 上一主题 下一主题

perl fork出现<defunct> 求解决方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-21 09:04 |只看该作者 |倒序浏览
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use Socket;
  4. use IO::Socket::INET;

  5. my $port = "83";
  6. my $adderss = "127.0.0.1";
  7. my $header = "HTTP/1.1 200 OK\n";
  8.    $header .= "Date:".time()."\n";
  9.    $header .= "Server: NsCp server/1.0\n";
  10.    $header .= "Content-Type: text/html; charset=utf-8\n";
  11.    $header .= "X-Powered-By: NsCp server\n";
  12.    $header .= "Connection: close\n";
  13. my $server = new IO::Socket::INET(
  14.             'Localhost' => $adderss,
  15.             'LocalPort' => $port,
  16.             'Listen'    => 5,
  17.             'Proto'     => 'tcp',
  18.             'Reuse'     => 1
  19.         ) or die "Reason: $!";

  20. while(my $client = $server->accept()) {
  21.     if(my $pid = fork){
  22.         next;
  23.     }
  24.     my $request = <$client>;
  25.     $client->write($header."\n<center><h1>Welcome to Server</h1><pre>");
  26.     $client->write($request);
  27.     close($client);
  28.     close($server);
  29.     exit;
  30. }
  31. close($server);
复制代码


有2个问题需要解决   
1.my $request = <$client>;
这样只可以获取一行记录 怎么样可以获取所有行记录
2.程序再客户端每发起一个连接就会在服务器上生成一个<defunct>进程

[ 本帖最后由 cnbist 于 2009-9-21 09:49 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-09-21 10:19 |只看该作者

回复 #1 cnbist 的帖子

1. 用while()
2.你的子进程没都回收

论坛徽章:
0
3 [报告]
发表于 2009-09-21 12:49 |只看该作者
parent里面

  1. use POSIX ":sys_wait_h";
  2.                    #...
  3.                    do {
  4.                        $kid = waitpid(-1, WNOHANG);
  5.                    } until $kid > 0;
复制代码

论坛徽章:
0
4 [报告]
发表于 2009-09-24 09:55 |只看该作者
lz用的是freebsd?

我记得这个问题在FreeBSD下遇到过,但是在Linux下不需要处理$SIG{CHLD},或者直接设置成ignore就行

论坛徽章:
0
5 [报告]
发表于 2009-09-24 12:01 |只看该作者
收割子进程,安装信号处理器
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP