detach共享内存时,如果shmdt函数返回失败的处理,求教!
detach共享内存时,如果shmdt函数返回失败,错误码=22,后面还需要调用sem_close去关闭信号量吗!
函数原型如下:
if (shmdt(schedule_shm_info.addr) == -1)
{
CORE_SCHBLD_PRINT_ERR(" detach error \n");
return; //此处需要返回吗?
}
if (sem_close(schedule_shm_info.shm_rw_sem) != 0)
{
CORE_SCHBLD_PRINT_ERR("sem_close failed!\n");
}
错误=22,是不是表示这个共享内存之前已经断开过,不需要再断开了?那么后面也不能调用sem_close去关闭信号量了,因为之前已经关闭过了?