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

chi*_*ila 13 c c++ unix linux posix

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

Jon*_*ler 16

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

  • mmap()的POSIX标准(http://www.opengroup.org/onlinepubs/9699919799/toc.htm)说:如果指定了MAP_SHARED,则写入引用应更改基础对象.没有关于'除非在内存写入完成之后但在数据刷新到磁盘之前进程被终止'的狡猾话语. (4认同)