我有一个 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);
当脚本被多次调用时,问题开始浮出水面。在脚本每分钟被调用 60 次的情况下,如果我pgrep
for socket.pl
,我会看到 100 或 200 个实例已经“运行”了 3 或 4 分钟。他们正在写入的服务器似乎 $data
立即在一个无异常的套接字上接收。
鉴于我在对等方上看不到任何表面上的错误,为什么即使该脚本似乎已写入套接字,它仍然存在?解释器是否会陷入困境或遇到一些约束或限制(脚本运行在一个非常强大的盒子上,所以它不是系统限制)?
谢谢。