最近我一直在Linux上使用消息队列(System V,但POSIX也可以),它们似乎非常适合我的应用程序,但是在阅读Unix编程艺术之后,我不确定它们是否真的是一个好的选择。
http://www.faqs.org/docs/artu/ch07s02.html#id2922148
System V IPC的上层消息传递层在很大程度上已经不再使用。下层由共享内存和信号量组成,在需要在同一台机器上运行的进程之间进行互斥锁定和一些全局数据共享的情况下仍具有重要应用价值。这些System V共享内存设施演变成了POSIX共享内存API,在Linux、BSD、MacOS X和Windows下得到支持,但不支持经典的MacOS。
http://www.faqs.org/docs/artu/ch07s03.html#id2923376
System V IPC功能在Linux和其他现代Unix系统中都存在。然而,由于它们是一个遗留功能,使用不太频繁。截至2003年中期,Linux版本仍然存在已知的缺陷。似乎没有人足够关心去修复它们。
最近的Linux版本中,System V消息队列是否仍然存在漏洞?我不确定作者是否意味着POSIX消息队列应该是ok的?
看起来套接字是几乎所有事情的首选IPC,但我无法想象如何使用套接字或其他东西实现非常简单的消息队列。还是我想得太复杂了?
我不知道我正在使用嵌入式Linux是否相关?
Ubuntu 14.04
、linux 3.13
上消息队列的默认设置,即命令cat /proc/sys/fs/mqueue/msg_max
列出的队列中的10个消息和/proc/sys/fs/mqueue/msgsize_max
的值为8192字节,它们似乎很小。这些默认设置是否有严格的原因或只是比较老?(man mq_overview
显示 msg_max 的硬限制约为32768,这已经相当高了。)我并不想创建一个无限流式的队列,但是将msg_max
设置为100-1000 是否可以呢? - xealits