Linux 中的消息队列和文件有什么区别?另外,消息队列中优先级的意义是什么?

What is the difference between Message Queues and files in Linux. Also, what is the significance of priorities in message queues?

在Linux中,消息队列是IPC的一种形式。但是,我不明白它们与文件有何不同。进程可以写入文件而不是写入消息队列,对吗?使用消息队列有什么好处?

另外,消息队列读写的优先级有什么意义?

文件主要存储在硬盘上,并且在多次系统重启后仍然存在。消息队列存储在主内存中,仅在系统 运行 时可用,并且不会在系统重新启动后保留。文件是字节序列,默认情况下,系统不会对这些字节强制执行结构。因此,使用文件进行 IPC 很困难,因为需要额外的逻辑来识别消息。还有就是多个程序同时写入一个文件,删除旧消息等问题。消息队列很快,因为消息都存储在主存中。内核会处理多个进程并发访问一个消息队列,消息的增删改查等问题。因此,文件用于在辅助存储上存储信息,而消息队列用于 inter-process 通信。