从 Unix 域套接字读取一行
Reading one line from a Unix domain socket
我有一台服务器 运行 socat
使用此命令:
socat ABSTRACT-LISTEN:test123 PIPE
我可以打开一个到这个服务器的套接字,发送一行,读取一行,然后用这个代码打印它:
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket::UNIX;
my $sock = IO::Socket::UNIX->new(
Type => SOCK_STREAM(),
Peer => "[=11=]test123"
) or die "Error creating socket: $!\n";
print $sock "Hello, world!\n";
my $line = <$sock>;
close $sock;
print $line;
然而,当我用以下内容替换最后 5 行时,程序挂起:
print <$sock>;
<FILEHANDLE>
运算符不是应该从句柄中读取一行吗?为什么我不能读一行并打印出来?
我有一台服务器 运行 socat
使用此命令:
socat ABSTRACT-LISTEN:test123 PIPE
我可以打开一个到这个服务器的套接字,发送一行,读取一行,然后用这个代码打印它:
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket::UNIX;
my $sock = IO::Socket::UNIX->new(
Type => SOCK_STREAM(),
Peer => "[=11=]test123"
) or die "Error creating socket: $!\n";
print $sock "Hello, world!\n";
my $line = <$sock>;
close $sock;
print $line;
然而,当我用以下内容替换最后 5 行时,程序挂起:
print <$sock>;
<FILEHANDLE>
运算符不是应该从句柄中读取一行吗?为什么我不能读一行并打印出来?