gpt4 book ai didi

perl - 如何创建Unix域套接字?

转载 作者:行者123 更新时间:2023-12-03 11:59:47 25 4
gpt4 key购买 nike

我正在尝试学习如何使用套接字在同一台计算机上的进程之间进行通信。我从Perl Cookbook的简单测试程序开始:

use feature qw(say);
use strict;
use warnings;
use IO::Socket;

my $socket_file = 'mysocket';
if ( -e $socket_file ) {
unlink $socket_file or die "Could not delete socket file '$socket_file': $!";
}
my $sock = IO::Socket::UNIX->new(
LocalAddr => $socket_file,
Type => SOCK_STREAM,
Listen => 5, # listen to max 5 connections
) or die "Could not create socket: '$@'";

say "Created socket successfully..";
sleep 1;
close $sock;
say "Closed socket..";

exit;

输出为:
Could not create socket: '' at ./test.pl line 10.

所以问题是:为什么 IO::Socket::UNIX->new()失败,为什么失败时不设置 $@

最佳答案

它没有设置$@,因为IO::Socket::UNIX在任何地方都不使用eval
如果您打印出$!而不是$@,则可能会看到:

Invalid argument at xxx.pl line 10.

此时,您可以查询 IO::Socket::UNIX docs并看到要传递的正确参数是 Local而不是 LocalAddr

关于perl - 如何创建Unix域套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39379254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com