说明.txt 752 B

123456789101112131415161718192021222324252627282930
  1. 消息队列的函数定义如下:
  2. #include <sys/msg.h>
  3. int msgctl(int msqid, int cmd, struct msqid_ds *buf);
  4. int msgget(key_t key, int msgflg);
  5. int msgrcv(int msqid, void *msg_ptr, size_t msg_sz, long int msgtype, int msgflg);
  6. int msgsnd(int msqid, const void *msg_ptr, size_t msg_sz, int msgflg);
  7. Linux系统中有两个宏定义:
  8. MSGMAX, 以字节为单位,定义了一条消息的最大长度。
  9. MSGMNB, 以字节为单位,定义了一个队列的最大长度。
  10. struct my_msg_st {
  11. long int my_msg_type;
  12. char some_text[BUFSIZ];
  13. }some_data;
  14. 创建
  15. if (msgid = msgget((key_t)1234, 0666 | IPC_CREAT)) == -1)
  16. 接收
  17. if (msgrcv(msgid, (void *)&some_data, BUFSIZ, msg_to_receive, 0) == -1)
  18. 发送
  19. if (msgsnd(msgid, (void *)&some_data, MAX_TEXT, 0) == -1)
  20. 删除
  21. if (msgctl(msgid, IPC_RMID, 0) == -1)