If one or more processes have the semaphore open when sem_unlink() is called, destruction of the semaphore is postponed until
all references to the semaphore have been destroyed by calls to sem_close(), _exit(), or exec.
如果一个或多个进程打开了该信号量,当调用sem_unlink后,要所有的打开该信号量的应用都关闭(调用sem_close,_exit或exec)该信号量
后,该信号量才能得到删除。(如果程序异常退出呢???)
实际上并不是,只要一调用sem_unlink,该信号量就被删了!!!
Calls to sem_open() to recreate or reconnect to the semaphore refer to a new semaphore after sem_unlink() is called.
all references to the semaphore have been destroyed by calls to sem_close(), _exit(), or exec.
如果一个或多个进程打开了该信号量,当调用sem_unlink后,要所有的打开该信号量的应用都关闭(调用sem_close,_exit或exec)该信号量
后,该信号量才能得到删除。(如果程序异常退出呢???)
实际上并不是,只要一调用sem_unlink,该信号量就被删了!!!
Calls to sem_open() to recreate or reconnect to the semaphore refer to a new semaphore after sem_unlink() is called.
如果使用sem_open再次创建或链接改信号量,对应的将是一个新的信号量在调用sem_unlink后
如果在使用sem_wait等待信号,这是使用sem_close或sem_unlink,依然会阻塞在sem_wait处,无法退出
如果在使用sem_wait等待信号,这时使用sem_unlink删除信号量,然后再新建一个同名信号量,使用sem_post发送信号,sem_wait是不会有响应的