如果一个进程被 SIGKILL 杀死,它对内存映射文件所做的更改是否会刷新到磁盘?我假设如果操作系统确保在进程通过 SIGKILL 终止时将内存映射文件刷新到磁盘,那么它也会使用其他终止信号(SIGABRT、SIGSEGV 等)这样做。
问问题
2689 次
这将取决于内存映射文件是否以私有(MAP_PRIVATE)或不(MAP_SHARED)修改打开。如果是私有的,那么没有;修改不会写回磁盘。如果共享,内核缓冲池包含修改后的缓冲区,这些缓冲区将在适当的时候写入磁盘 - 无论死因如何。
我自己提出了一个类似的问题,然后在我对答案不满意时跟进了演示代码。参见mmap、msync 和 linux 进程终止