如果进程是SIGKILLed,OS(POSIX)是否刷新内存映射文件?

时间:2009-05-14 14:08:19

标签: c++ c linux unix posix

如果使用SIGKILL终止进程,它对内存映射文件所做的更改是否会刷新到磁盘?我假设如果操作系统确保在通过SIGKILL终止进程时将内存映射文件刷新到磁盘,那么它也将使用其他终止信号(SIGABRT,SIGSEGV等等)来执行此操作。

2 个答案:

答案 0 :(得分:16)

这取决于是否使用私有修改(MAP_PRIVATE)打开内存映射文件(MAP_SHARED)。如果私有,那么没有;修改不会写回磁盘。如果共享,则内核缓冲池包含已修改的缓冲区,并且这些缓冲池将在适当的时候写入磁盘 - 无论死亡原因如何。

答案 1 :(得分:0)

我自己提出了一个类似的问题,然后在我对答案不满意时跟进了演示代码。见mmap, msync and linux process termination