您的位置:首页 > 运维架构 > Linux

Linux有名信号量的创建(sem_open中name参数构造)

2014-11-03 14:46 176 查看
一、sem_open函数name参数的构造

Linux的有名信号量的创建是通过调用sem_open函数创建的,函数原型如下:



我刚开始用以为是想一般的指定一个路径名给sem_open中的name参数就可以了,可是我使用“/tmp/sharesem"给name参数确总是返回

no such file or diratory 的错误。我$ man 3 sem_open了下,如上图。发现name参数的构造的详细介绍需要sem_overview(7) 中。(看到这我就可能是像消息队列类似了)

我$ man 7 sem_overview

得到下面的描述



很明显,name参数的构造是以 “ / ” 号开头,后面跟的字符串不能再有 “ / ” 号,长度小于NAME_MAX - 4。

所以说我设置name参数为“/tmp/sharesem"所错误的。

二、Linux有名信号量的存储

有名信号量是随内核持续的,所以如果如果我们不调用sem_unlink来删除它,它将一直存在,直到内核重启。

那有名信号量保存在哪里呢?

实时上,跟消息队列类似,它保存在 /dev/shm 这个目录中。你可以在这个目录中找到你创建了的,但是没有调用sem_unlink的信号量。

由此可见有名信号量的实现是以共享内存区实现的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: