0

我正在用 C 语言创建几个必须通过文件进行通信的程序。

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

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

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

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

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

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

4

1 回答 1

2

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

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

于 2013-10-06T17:56:27.397 回答