我有一個使用HTTP::Daemon的基本perl HTTP服務器。當我停止並啓動腳本時,看起來該端口仍在偵聽,並且收到一條錯誤消息,指出我的HTTP :: Daemon實例未定義。如果我在腳本停止後大約一分鐘嘗試啓動腳本,它就可以正常工作,並且可以再次綁定到端口。如何停止在Perl中使用HTTP :: Daemon端口進行偵聽
當程序終止而不必等待它超時時,有什麼辦法可以停止監聽端口?
use HTTP::Daemon;
use HTTP::Status;
my $d = new HTTP::Daemon(LocalAddr => 'localhost', LocalPort => 8000);
while (my $c = $d->accept) {
while (my $r = $c->get_request) {
$c->send_error(RC_FORBIDDEN)
}
$c->close;
undef($c);
}
編輯:
按DVK的迴應,我打過電話$d->close()
而是試圖重新啓動我的腳本時,我仍然得到同樣的錯誤。
END { $d->close(); }
$SIG{'INT'} = 'CLEANUP';
$SIG{__WARN__} = 'CLEANUP';
$SIG{__DIE__} = 'CLEANUP';
sub CLEANUP {
$d->close();
undef($d);
print "\n\nCaught Interrupt (^C), Aborting\n";
exit(1);
}
是的,我在最後,INT名爲$ D->關閉(),\ __ DIE__和\ __ WARN__塊,我仍然得到同樣的錯誤。 – Trevor 2010-06-14 17:31:05