当前位置:  技术问答>linux和unix

请教使用sem_unlink删除信号量的问题

    来源: 互联网  发布时间:2016-06-14

    本文导语:  两个进程之间使用同一个命名信号量进行通讯(使用sem_open创建),文档上说sem_unlink会维护一个引用计数只有当此计数为零时才真正删除此信号量,但是现在我发现只要一调用sem_unlink函数信号量就会删除,不知道为...

两个进程之间使用同一个命名信号量进行通讯(使用sem_open创建),文档上说sem_unlink会维护一个引用计数只有当此计数为零时才真正删除此信号量,但是现在我发现只要一调用sem_unlink函数信号量就会删除,不知道为什么?(开发环境:Redhat.Enterprise.Linux5.U3.i386)

|
The sem_unlink() function removes the specified named semaphore. If other process are currently referencing the specified semaphore, sem_unlink() has no effect on the state of the semaphore. If one or more processes have the specified semaphore open when you call sem_unlink(), the semaphore is not removed until all references to the semaphore has been destroyed by sem_close(), _exit(), or exec() calls. Calls to sem_open() to re-create or re-connect to the specified semaphore refer to a new semaphore after sem_unlink() is called. The sem_unlink() call does not block until all references have been destroyed; it returns immediately. 



你是怎么确定被删除的时候,引用计数不为0.

|
       sem_getvalue - get the value of a semaphore

SYNOPSIS
       #include 

       int sem_getvalue(sem_t *sem, int *sval);

DESCRIPTION
       sem_getvalue() places the current value of the semaphore pointed to sem into the integer pointed to by sval.

       If  one  or  more processes or threads are blocked waiting to lock the semaphore with sem_wait(3), POSIX.1-2001 permits
       two possibilities for the value returned in sval: either 0 is returned; or a negative number whose  absolute  value  is
       the count of the number of processes and threads currently blocked in sem_wait(3).  Linux adopts the former behavior.

RETURN VALUE
       sem_getvalue() returns 0 on success; on error, -1 is returned and errno is set to indicate the error.

ERRORS
       EINVAL sem is not a valid semaphore.

CONFORMING TO
       POSIX.1-2001.

NOTES
       The value of the semaphore may already have changed by the time sem_getvalue() returns.

|
用 ipcs 看看状态先

|

你是先调用 sem_close还是先调用sem_unlink呢?
最好把你写的两个测试程序发出来看看

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教:多线程模式下的信号处理问题
  • linux编程中简单的信号处理问题,请教各位,谢谢。
  • 信号方面的问题请教.请大家指点
  • 初学,请教一个信号问题,这个方法不理解
  • 请教一段代码的意思,信号和超时的
  • 请教关于Kill向子进程发送信号的问题,子进程如何相应信号,为什么子进程接受不到。
  • 博客 iis7站长之家
  • 请教一个有关信号的问题
  • 还是不懂,驱动到底如何能同步的发送信号给用户程序,请教高人,谢谢了
  • 小白请教关于Listen、accept、信号处理函数、waitpid的几个问题
  • 请教信号发送程序遇到的一个问题
  • 请教信号难题
  • 请教关于SIGSEGV信号的问题
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3