代码之家  ›  专栏  ›  技术社区  ›  chila

如果进程被sigdilled,操作系统(POSIX)是否会刷新内存映射文件?

  •  13
  • chila  · 技术社区  · 17 年前

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

    2 回复  |  直到 17 年前
        1
  •  17
  •   Jonathan Leffler    17 年前

    它将取决于内存映射文件是否以修改私有(MAP_private)打开(MAP_SHARED)。如果是私人的,那么就没有;修改将不会写回磁盘。如果共享,内核缓冲池将包含修改过的缓冲区,这些缓冲区将在适当的时候写入磁盘,而不管死亡原因是什么。

        2
  •  0
  •   Community Mohan Dere    9 年前

    我自己也提出了一个类似的问题,当我对答案不满意时,我会用演示代码进行跟进。看见 mmap, msync and linux process termination