NoS*_*tAl 4 c++ linux shared-memory
如果你对动机感兴趣我会在接下来的几句中详细阐述它,如果不是只是跳到Q.
我正在考虑制作快速记录器但是在程序崩溃时没有受到影响的记录器(也就是少数最后一次记录消息没有丢失).所以我的想法是写入共享内存(ringbuffer)并从中读取另一个低prio进程并进行转储.但为了工作,我需要知道如果一个进程退出(正常退出,SEGFAULT)共享内存会发生什么...
所以我的问题是:当其中一个触发器死掉时,共享内存会发生什么(在Linux中,但你也可以在A中获胜)是UB吗?
当其中一个触发器死亡时,共享内存会发生什么(在Linux中,但你也可以在A中获胜)
没有.当进程终止时,共享内存保持不变.它被映射为目录下的/dev/shm/文件.它在系统重新启动时或当所有进程取消映射共享内存文件并被shm_unlink()调用时被删除.
是UB吗?
不,它定义明确.请参见shm_overview(7)的手册页:
POSIX共享内存对象具有内核持久性:共享内存对象将一直存在,直到系统关闭,或者直到所有进程都已取消映射该对象并且已使用shm_unlink删除它(3)