释放内存并关闭函数中的sem_t?

时间:2016-04-29 14:06:55

标签: c function semaphore shared-memory

我在我的程序中创建了一个信号量和一些共享内存,在程序结束时,我将这样关闭:

sem_close();
sem_unlink();

shmdt();
shmctl();

但是,如果在程序中出现问题并且需要退出,我需要尽快释放这些资源,所以我想写一个这样的函数:

void f( sem_t *s, int *shm, int shmid ) {

sem_close(s);
sem_unlink(name);

shmdt(shm);
shmctl(shmid, IPC_RMID, NULL);

}

其中name是我在程序上方定义的sempahore的名称。

但是我会弹出“冲突类型”错误。

有没有办法在程序结束之前通过这样的函数释放资源?

我很乐意提供任何帮助!谢谢!

0 个答案:

没有答案