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

Linux 3.14 policy when closing file handles of a program that exited prematurely

本文关键字:Linux 策略 文件句柄 程序 退出      更新时间:2023-10-16

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

两者都没有。它不会丢弃数据。通过内核中的文件/页面缓存映射的数据,将在内核认为方便的时候(或者直到程序显式发出msync()调用)刷新到磁盘。这与在文件描述符上执行普通write(),然后关闭该文件描述符,或者退出程序时发生的情况基本相同。

请记住,对该文件的访问通过相同的内核缓存,因此无论进程是否崩溃,其他进程都会立即看到您写入的数据。(不过可能受到记忆障碍的影响)。