以下で構成される Perl スクリプトがあります。
#!/usr/bin/perl
# Script name: socket.pl
# Build socket:
use IO::Socket;
my $sock = new IO::Socket::INET (
PeerAddr => '74.74.74.74',
PeerPort => '1543',
Proto => 'tcp',
)
or die "Could not create socket: $@\n";
# Make a pipe-delimited string out of the four arguments:
$data = "$ARGV[0]$ARGV[1]|$ARGV[2]|$ARGV[3]|$ARGV[4]";
# Write to socket and immediately close:
print $sock "$data";
close($sock);
スクリプトが何度も呼び出されると、問題が表面化し始めます。スクリプトが 1 分間に 60 回呼び出されるシナリオでは、pgrep
もしsocket.pl
. 彼らが書き込んでいるサーバーは $data
、例外の空きソケットですぐに受信するように見えます。
ピアに表向きのエラーが見られないのに、ソケットに書き込んだように見えるにもかかわらず、このスクリプトが残っているのはなぜですか? インタープリターが動かなくなったり、なんらかの制約または制限に達したりしませんか (スクリプトは非常に機能的なボックスで実行されているため、システムの制限ではありません)。
ありがとう。