【发布时间】:2016-03-28 07:04:10
【问题描述】:
在linux上,写了一个简单的程序来创建一个POSIX消息队列,并发送一个msg给它,进程终止后,msg似乎还在。
问题是:
- 重启后消息还在吗?
- 如果存在,那么它在磁盘上,如果将msg存储在磁盘而不是内存上,它如何保证性能。
【问题讨论】:
标签: c linux posix ipc message-queue
在linux上,写了一个简单的程序来创建一个POSIX消息队列,并发送一个msg给它,进程终止后,msg似乎还在。
问题是:
【问题讨论】:
标签: c linux posix ipc message-queue
不,它在重新启动后不存在,因为它驻留在 virtual filesystem 上。
【讨论】:
Kernel Persistence。表示如果没有被mq_unlink() 删除,那么它将一直存在于内核中,直到系统关闭。
virtual file system 不是原因,因为我猜所有(至少大多数)常规文件都存在于 VFS 上。
在 Linux 上,消息队列安装在 虚拟 文件系统上,文件的存在并不意味着任何内容都写入了物理介质。此实现特定于 Linux,不需要 POSIX 行为。
mq_overview 手册页描述了实现。
【讨论】:
virtual memory file system。