关闭提前退出的程序的文件句柄时的Linux 3.14策略

时间:2014-09-29 13:29:14

标签: c++ linux linux-kernel

假设程序打开用于写入的内存映射文件的情况。将内容写入文件后,立即调用exit(0)。现在我的问题是内核在这种情况下做了什么?是否在关闭文件描述符时将内存映射区域的内容刷新到文件中,否则它会丢弃缓冲区中的内容?

1 个答案:

答案 0 :(得分:2)

都不是。它不会丢弃数据。数据通过内核中的文件/页面缓存映射,并在内核找到方便时(或直到程序显式发出msync()调用)刷新到磁盘。这与在文件描述符上执行普通write(),关闭()该文件描述符或退出程序时会发生的情况几乎相同。

请记住,访问该文件需要通过相同的内核缓存,因此其他进程会立即看到您写入的数据是否进程崩溃。 (尽管可能存在记忆障碍)。