我正在用 C 编写一个程序,它使用了一些进程、信号量和映射内存。当我映射内存然后程序在执行过程中失败,无法到达释放内存的阶段,程序卡住了,我不得不杀死它(Ctrl+C)。
问题是当我修复错误并再次运行程序时 - 它调用共享内存错误或信号量错误并且程序终止。我只能通过重新启动整个操作系统来解决这个问题。
有没有另一种方法,如何在意外错误后“释放”已分配的内存?
仅供引用:ipcs 不显示分配的内存或使用的信号量。
编辑:我只需要标记一个“正确”答案,但我要感谢大家提出的想法。结果是出现问题后,删除/dev/shm文件夹中除pulse...以外的所有内容即可解决。
最佳答案
POSIX 共享内存没有特定的命令行工具。但它通常映射到/dev/shm 树中,您可以在其中使用经典文件操作工具管理段。
关于c - 在 Linux 中终止后释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416719/