首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于C Linux中命名信号量的质疑

关于C Linux中命名信号量的质疑
EN

Stack Overflow用户
提问于 2013-06-12 18:44:08
回答 2查看 1K关注 0票数 3

我在LinuxC中使用named semaphore来控制跨多个进程的共享内存的访问。到目前为止,我还没有向sem_closesem_unlink信号量添加任何代码。所以我的问题是:

当所有使用它的进程结束时,命名信号量会自动销毁吗?

如果是,那么完全不调用sem_closesem_unlink是可以的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 18:50:57

http://linux.die.net/man/7/sem_overview

"POSIX命名信号量具有内核持久性:如果没有被sem_unlink(3)删除,信号量将一直存在,直到系统关闭。“

票数 4
EN

Stack Overflow用户

发布于 2013-06-12 18:51:18

从手册页http://pubs.opengroup.org/onlinepubs/7908799/xsh/sem_close.html

sem_close()函数用于指示调用进程已使用由sem指示的已命名信号量完成。为未命名信号量(由sem_init()创建的信号量)调用sem_close()的效果未定义。sem_close()函数解除分配(即,供随后的sem_open()重用)系统分配的任何系统资源,供该进程用于该信号量。由该进程指示的由sem指示的信号量的后续使用的效果是未定义的。如果成功调用sem_unlink()还没有删除信号量,那么sem_close()对信号量的状态没有任何影响。

If the sem_unlink() function has been successfully invoked for name after the most recent call to sem_open() with O_CREAT for this semaphore, then when all processes that have opened the semaphore close it, the semaphore is no longer be accessible.

因此,本质上,当打开信号量的所有进程都成功调用了sem_unlink和sem_close时,信号量就被销毁了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17063479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档