我在我的程序中创建了一个信号量和一些共享内存,在程序结束时,我将这样关闭:
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的名称。
但是我会弹出“冲突类型”错误。
有没有办法在程序结束之前通过这样的函数释放资源?
我很乐意提供任何帮助!谢谢!