进程间通信--消息队列

时间:2021-04-07 12:47:56   收藏:0   阅读:25

消息队列(message queue):是进程间通讯的一种常用的方式,可以传递多种类型的数据流,可以实现异步传输。

消息队列是两个或者多个应用程序约定好的一种交互方式,体现在彼此知晓共同的消息队列 ID, 该收取哪种类型的消息。

下面开始介绍应用的过程,附着的代码是在某公司开发feature时候加入的

1.  创建IPC key

  key_t ftok(const char* pathname, int proj_id)

2.  获取消息队列 ID

  int msgget(key_t key, int msgflg)

3.  消息类型定义 msgbuf

  msgbuf定义有一定的规范,常用如下:

struct msgbuf {
    long type;
    char mtext[1];
};

  每一个msg中必须含有一个 long 类型的type,用于区分消息类型,后面的数据是可以自定义的,如下:

...
#define CHASSISID_MAX_SIZE  255
#define PORTID_MAX_SIZE     255
...

struct neighborInfo {
    long type;
    char chassis_id[CHASSISID_MAX_SIZE + 1];
    char port_id[PORTID_MAX_SIZE + 1];
};

 

4.  发送消息 msgsnd

  int msgsnd(int msgid, const void *msgp, size_t msgsz, int msgflg)

5. 接收消息 msgrcv

  ssize_t msgrcv(int msgid, void *msgp, size_t msgsz, long msgtyp, int msgflg)

6. 消息队列控制 msgctl

  int msgctl(int msqid, int cmd, struct msqid_ds *buf);

原文:https://www.cnblogs.com/victor1234/p/14626442.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!