Perl 中信号量不能创建的问题解决方法
浏览:699次 出处信息
为了多进程的程序能生成 UUID 在程序中使用共享内存来存放信号量, 以 P V 操作来控制不让生成 UUID 的程序会生成重复的 ID . 自己测试着后来发现出了一个奇怪的错误, 刚开始很正常,后来信号量的对象怎么样也 new 不起来.一直是没有定义.
#!/usr/bin/perl usestrict; useIPC::Semaphore; useSmart::Comments; useIPC::SysV qw(S_IRWXU S_IRUSR S_IWUSR IPC_CREAT IPC_NOWAIT SEM_UNDO); my$mutex = IPC::Semaphore->new( 123, 1, S_IRUSR | S_IWUSR | IPC_CREAT ); $mutex->setall(1); ### $mutex
使用的时候, 每次 setall 都提示 Can't call method "setall" on an undefined value . 很是奇怪.上面这个程序实在简单.后来使用 strace 跟了一下程序. 发现最后报的错是
No space left on device. 也就是讲,其实有些东西达到了操作系统的限制.
所以查了查相关的东西.使用 ipcs -s 的命令,可以查看到操作当前所有的信号量.
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x0000007b 100925440 root 600 1
这样就好办了,给自己创建的信号量,但又没有删除的,直接通过相关的命令执行掉就好了.
ipcs -s|perl -nale 'print "ipcrm -s $F[1]" if $F[1] =~ /\d+/'|sh
问题解决.
建议继续学习:
- perl更新/修改/删除文本文件内容 (阅读:9483)
- perl大牛flw传说 (阅读:6525)
- 两个精彩的比喻:吞吐量和延迟、信号量和互斥锁 (阅读:6083)
- perl模块Getopt::Std用法及实例-从命令行读取参数模块 (阅读:5941)
- [Perl] Template::Toolkit 模板技术. (阅读:5385)
- 在perl中连接和使用sqlite做数据存储 (阅读:5111)
- Perl命令行常见用法及技巧 (阅读:4869)
- perl模块之MIME::Lite发送有附件的邮件 (阅读:4460)
- perl的expect使用方法,实现非交互式登录。 (阅读:4547)
- Perl 倒行分析文件方法。perl读文本文件,从末尾往前读. (阅读:4497)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:给 Kibana 实现百分比统计图表
后一篇:redis超时问题分析 >>
文章信息
- 作者:扶 凯 来源: 扶凯
- 标签: Perl 信号量
- 发布时间:2014-11-28 22:18:43
建议继续学习
近3天十大热文
- [69] Twitter/微博客的学习摘要
- [67] IOS安全–浅谈关于IOS加固的几种方法
- [65] 如何拿下简短的域名
- [65] android 开发入门
- [63] find命令的一点注意事项
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则