[英]POSIX Message Queues For Passing Data Between Pthreads
我有一个Linux C程序,用于在线程之间传递数据。 我一直在研究使用POSIX消息队列来解决此问题,因为它们不需要互斥锁/锁。
查看mq_open()调用,我必须指定权限和队列的路径。 这使我想到两个问题。
提前致谢。
关于问题1
,请查看系统上mq_open
的实现说明。 至少在Linux和FreeBSD上,消息队列名称必须以斜杠开头,但不得包含其他斜杠。
因此,尽管消息队列的名称看起来像路径,但它可能是也可能不是文件系统中的实际inode,具体取决于实现。 根据mq_overview(7) ,Linux将虚拟文件系统用于消息队列,该队列可以挂载或不挂载。
有鉴于此,问题2
可能没有意义。 如果实际上甚至支持对/dev/mqueue
中的文件进行锁定并且是否完成了所需的操作,则必须运行测试或检查内核源。
我不会打扰保护队列不受外部进程的影响。
由于羊群只是建议性的,不是强制性的,因此对您没有任何好处。 另外,我不确定flock是否可以在队列描述符上使用。
当然,以自己的用户身份运行服务将使其他进程无法使用模式0600访问队列。
但是,我将确保在启动时一次只能在队列中处理一项服务。 您可以使用pid锁定或d-bus来这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.