消息队列是一种非常常见的进程间通信方式。
使用消息队列也很简单。首先是创建消息队列,消息队列由内核来维护,创建成功后,用命令ipcs可以看到。一个进程往消息队列中写入数据,另一个进程从消息队列中读取数据。乍一看,跟管道的读写操作一样。
但是它比管道更加实用,发送数据的时候,可以指定数据的类型。也就是说,发出去的数据被分成了两份,一份是具体的数据,另一份用来表示类型。这样即使有多个进程来读取数据,只要各自指定了类型,数据就不会乱。
而管道却没有这么灵活,如果有多个进程读取管道数据,先读的进程就能获得全部数据。
消息队列主要涉及这么几个函数。创建消息队列使用msgget,第一个参数是key,用于区分内核中不同的消息队列,第二个参数表示创建消息队列且消息队列不存在。
发送数据使用msgsnd,参数分别是消息队列标识、发送的数据、数据的长度以及标志位。
接收数据使用msgrecv,多了一个参数表示数据的类型。
运行程序,一个进程写入数据,另一个进程就能把数据读取出来。
这就是进程间通信的消息队列,他比管道和信号更加实用,如果有多个进程需要传输数据,用消息队列更加合适。
-
消息队列
+关注
关注
0文章
33浏览量
2964
原文标题:进程间通信之消息队列
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论