stdcerr Asked: 2018-08-10 11:01:01 +0800 CST2018-08-10 11:01:01 +0800 CST 2018-08-10 11:01:01 +0800 CST 当进程死亡时共享内存区域会发生什么? 772 我想知道当shmget()任何进程终止或死?该区域是被释放还是会持续存在? linux process 2 个回答 Voted schily 2018-08-10T11:25:44+08:002018-08-10T11:25:44+08:00 这取决于应用程序的作者是否知道如何处理该问题。 许多应用程序都是这样编写的,以便它们调用 shmctl(id, IPC_RMID, 0); 在他们停止使用共享内存段之后。 在这种情况下,内存段将在程序意外终止后继续存在,例如使用核心转储。 但是,如果程序在附加内存段后直接调用shmctl(id, IPC_RMID, 0);,内核将为任何类型的程序终止执行所需的内务处理。 Best Answer RalfFriedl 2018-08-10T11:09:17+08:002018-08-10T11:09:17+08:00 它将持续存在,必须明确删除shmctl IPC_RMID 标记要销毁的段。该段实际上只有在最后一个进程将其分离后才会被销毁......调用者必须是该段的所有者或创建者,或者是特权。
这取决于应用程序的作者是否知道如何处理该问题。
许多应用程序都是这样编写的,以便它们调用
在他们停止使用共享内存段之后。
在这种情况下,内存段将在程序意外终止后继续存在,例如使用核心转储。
但是,如果程序在附加内存段后直接调用
shmctl(id, IPC_RMID, 0);
,内核将为任何类型的程序终止执行所需的内务处理。它将持续存在,必须明确删除
shmctl IPC_RMID