zoukankan      html  css  js  c++  java
  • linux消息队列相关操作

    /* 发送消息队列 */

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>

    struct mymsg
    {
    long mtype; /* message type, must be > 0 */
    char mtext[32];
    };


    #define KEY (key_t)0x1fff
    int
    main ( int argc, char *argv[] )
    {
    key_t key;
    int msgid;
    int res;
    key = KEY;
    struct mymsg msg;

    printf ("发送给解析进程...... ");
    strcpy (msg.mtext, "haha");

    /* 创建消息队列 */
    msgid = msgget (key, 0666 | IPC_CREAT);
    if (msgid == -1)
    {
    perror ("msgget");
    }
    msg.mtype = 1;

    res = msgsnd (msgid, &msg, sizeof(struct mymsg), 0);
    printf ("fa ok msg.mtext = %s ", msg.mtext);

    return 0;
    }

     ========================================================

    /* 接收消息队列 */

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>

    struct mymsg
    {
    long mtype; /* message type, must be > 0 */
    char mtext[32]; /* message data */
    };

    #define KEY (key_t)0x1fff
    int main ( int argc, char *argv[] )
    {
    key_t key;
    int msgid;
    int res;
    key = KEY;

    struct mymsg msg;
    /* 创建消息队列 */
    msgid = msgget (key, 0666 | IPC_CREAT);
    if (msgid == -1)
    {
    perror ("msgget");
    }
    msg.mtype = 1;

    /* libnids抓包信息 */
    int i=1;
    while(i--)
    {
    res = msgrcv (msgid, &msg, sizeof(struct mymsg), 0, 0);
    printf ("shou ok, msg.mtext = %s ", msg.mtext);
    }

    return 0;
    }

     ==========================================================

    /*删除消息队列*/

    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>

    /* 消息队列通信的key */
    #define KEY (key_t)0x1fff

    int rmqueue(key_t key)
    {
    int msgid, res;

    msgid = msgget (key, 0);
    res = msgctl(msgid, IPC_RMID, 0);
    return 0;
    }

    int main ( int argc, char *argv[] )
    {
    key_t key;

    key = KEY;
    rmqueue(key);

    return 0;
    }

     ==========================================================

    /* 获取消息队列的状态信息 */

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>

    #define NIDS_PRO_KEY (key_t)0x1fff

    int main()
    {
    key_t key;
    key = NIDS_PRO_KEY;
    int id = msgget(key,0);
    if (id == -1) perror("shmget"),exit(-1);
    struct msqid_ds ds;
    msgctl(id,IPC_STAT,&ds);
    printf("key=%x ",ds.msg_perm.__key);
    printf("mode=%o ",ds.msg_perm.mode);
    printf("current total size=%d ",ds.__msg_cbytes);
    printf("current msg count=%d ",ds.msg_qnum);
    printf("system max allow msg size=%d ",ds.msg_qbytes);
    }

  • 相关阅读:
    栈的压入、弹出序列
    CSS min-height 属性
    ie6 png 透明的解决方法,大网站都在用
    div覆盖div DIV相互重叠如何解决
    div代码大全 DIV代码使用说明
    CSS中ul li居中的问题
    复选框单选框与文字对齐问题的研究与解决
    CSS利用filter/opacity实现背景透明
    什么是块级元素和内联级元素(二)
    网页上PNG透明图片的运用(ie6+滤镜)
  • 原文地址:https://www.cnblogs.com/etangyushan/p/3989199.html
Copyright © 2011-2022 走看看