zoukankan      html  css  js  c++  java
  • Linux发送与接收信息

    receive:

    View Code
    #include <sys/types.h>
    #include 
    <sys/ipc.h>
    #include 
    <sys/msg.h>
    #include 
    <stdio.h>
    #include 
    <stdlib.h>
    #include 
    <unistd.h>
    #include 
    <string.h>

    #define BUFFER_SIZE  512

    struct message
    {
        
    long msg_type;
        
    char msg_text[BUFFER_SIZE];
    };

    int main()
    {
        
    int qid;
        key_t key;
        
    struct message msg;
        
        
    if((key=ftok(".",'a'))==-1)
        {
            perror(
    "ftok");
            exit(
    1);
        }

        
    if((qid=msgget(key,IPC_CREAT|0666))==-1)
        {
            perror(
    "msgget");
            exit(
    1);
        }

        printf(
    "Open queue %d",qid);

        
    do
        {
            memset(msg.msg_text,
    0,BUFFER_SIZE);
            
    if(msgrcv(qid,(void*)&msg,BUFFER_SIZE,0,0)<0)
            {
                perror(
    "msgrcv");
                exit(
    1);
            }

            printf(
    "The message from process %d : %s",(int)msg.msg_type,msg.msg_text);
            
        }
    while(strncmp(msg.msg_text,"quit",4));

        
    if((msgctl(qid,IPC_RMID,NULL))<0)
        {
            perror(
    "msgctl");
            exit(
    1);
        }
        
        exit(
    0);
        
    }

    send:

     

    View Code
    #include <sys/types.h>
    #include 
    <sys/ipc.h>
    #include 
    <sys/msg.h>
    #include 
    <stdio.h>
    #include 
    <stdlib.h>
    #include 
    <unistd.h>
    #include 
    <string.h>

    #define BUFFER_SIZE 512


    struct message{
        
    long msg_type;
        
    char msg_text[BUFFER_SIZE];
    };

    int main()
    {
        
    int qid;
        key_t key;
        
    struct message msg;
        
        
    if((key=ftok(".",'a'))==-1)
        {
            perror(
    "ftok");
            exit(
    1);
        }

        
    if((qid=msgget(key,IPC_CREAT|0666))==-1)
        {
            perror(
    "msgget");
            exit(
    1);
        }

        printf(
    "Open queue %d\n",qid);
        
        
    while(1)
        {
            printf(
    "Enter some message to the queue:");
            
    if((fgets(msg.msg_text,BUFFER_SIZE,stdin))==NULL)
            {
                puts(
    "No message");
                exit(
    1);
            }
            msg.msg_type
    =getpid();
            
            
    if((msgsnd(qid,&msg,strlen(msg.msg_text),0))<0)
            {
                perror(
    "message posted");
                exit(
    1);
            }

            
    if(strncmp(msg.msg_text,"quit",4)==0)
            {
                
    break;
            }

        }
        exit(
    0);
    }


    gcc 两者

     #运行接收

    ./msgcrv 

    #运行发送 

    ./msgsnd

    #open two console to see the effect

  • 相关阅读:
    如何配置寄存器
    逻辑分析仪的使用
    CAN中如何计算波特率并配置波特率
    led不同颜色的驱动电压和驱动电流
    ULINK2配置
    电机加减速转动
    2N7002
    未添加时钟文件产生报错
    烟雾传感器
    Strategy 设计模式 策略模式 超靠谱原代码讲解
  • 原文地址:https://www.cnblogs.com/no7dw/p/2049495.html
Copyright © 2011-2022 走看看