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

  • 相关阅读:
    Java 读取大容量excel
    Linux 安装mysql
    Linux 配置nginx
    java 微信H5支付
    微信公众号授权登录两种方式
    Jsoup 获取页面返回的table中的内容
    Python Model执行迁移数据库失败
    java上传txt文件,出现中文乱码
    在Window环境下,使用Django shell 命令查询数据库
    Java模拟form表单提交普通参数和文件
  • 原文地址:https://www.cnblogs.com/no7dw/p/2049495.html
Copyright © 2011-2022 走看看