我想使用mmap()在进程之间共享内存。 mmap()可以应用于常规文件或POSIX共享内存文件(shm_open)。但有什么区别?肯定不是磁盘是否被访问:
答案 0 :(得分:1)
一个区别是尽管共享内存可能会写入磁盘,但它永远不会永久写入磁盘 。如果您创建一个普通文件,它将在重新启动后保持不变。如果您创建共享内存对象,则不会。在这方面,它的行为非常像临时文件。
另一个区别是“It is unspecified whether the name appears in the file system and is visible to other functions that take pathnames as arguments”。因此,虽然共享内存对象具有类似文件的路径,但它实际上不需要出现在文件系统中。
实际上,这两个差异都与文件系统脱钩有关。文件和共享内存对象都是可以读写的字节包,但文件的不同之处在于它们在文件系统中持久存在。