C中的无缝内存映射文件

时间:2013-10-06 17:49:47

标签: c linux posix

我在C中创建了几个必须通过文件进行通信的程序。

他们将使用文件,因为通信不是线性的,即程序#5可以使用程序#2创建的文件。

这些程序的执行将是线性的(串行)。

将有一个控制程序来管理这些级联程序的执行。该程序将是创建文件的程序,并且只应将文件名传递给程序

由于磁盘I / O很慢(假设操作系统没有缓存这些操作),我需要使用内存映射文件。

然而,要求是控制程序可以在常规文件和内存映射文件之间无缝切换 - 这意味着级联程序必须不知道它们是否正在写入/读取内存映射文件或者是常规的。

如何创建一个文件,该文件作为普通文件呈现给系统的其余部分(在FS层次结构中有一个位置,文件名可以读写),但事实上在内存而不在磁盘上?

1 个答案:

答案 0 :(得分:2)

您在这里使用的术语有点奇怪 - 内存映射是一种访问文件(任何文件)的方式,而不是存储在磁盘上的文件的单独类型。

话虽这么说,如果你想把你的一些文件写到磁盘而不是一些文件,最简单的方法是将它们存储在内存文件系统中,例如tmpfs。在大多数Linux系统上,/dev/shm通常都安装了其中一个。