免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2665 | 回复: 1
打印 上一主题 下一主题

perl 的flock不支持socket 句柄? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-17 10:04 |只看该作者 |倒序浏览
use strict;
use IO::Socket;
use Fcntl qw(:flock);
our $SOCK;
$addr = '133.72.45.10;
$port = '8310';
$SOCK = IO::Socket::INET->new(PeerAddr => $addr,
                                                  PeerPort => $port,
                                                  Type     => SOCK_STREAM,
                                                  Timeout=>10,
                                                  Proto => 'tcp'
                                                ) or die "socket create error:".$!."\n";
my $ret;
$ret=flock($SOCK, 2) or print  "Cannot lock  - $!\n"; #2为排他
print "the ret isret"."\n";

Cannot lock - Invalid argument
the ret is:0

0表示锁文他失败。

换为普通本地文件是没有问题的。
奇怪了。难道flock 不支持socket?
父进程生成socket,然后fork N多子进程,子进程要通过socket访问远程服务器。
写为 $ret=flock($SOCK, 2) 不or的话,不报错,所以一直以为没问题。后来发现有竞态的情况发生。
如何解决?求助。

论坛徽章:
0
2 [报告]
发表于 2014-09-25 00:00 |只看该作者
看下你的SOCKET有没有new成功再说
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP