pretend001 2021-05-30 16:00 采纳率: 0%
浏览 16

Ubuntu虚拟机,有大佬会这个嘛,求解答

作业要求:

使用管道通信的方式,实现两个进程可以进行聊天模式,即一开始进程1处于发送信息的模式,进程2处于接收信息的模式,进程2接收到进程1的消息后,进程2转化为发送信息的模式,进程1转化为接收信息的模式....一直反复进行

  • 写回答

1条回答 默认 最新

  • 指尖@韶华 2023-12-20 10:02
    关注

    1、创建一个命名管道(例如pipe_demo):
    mkfifo pipe_demo
    2、创建一个用于发送消息的脚本(例如send_message.sh),在其中将消息写入命名管道:

    #!/bin/bash
    
    # 设置当前进程为发送消息的模式
    echo "Sending mode. Enter 'exit' to quit."
    
    # 无限循环,等待用户输入消息并写入命名管道
    while true; do
        read message
        if [ "$message" == "exit" ]; then
            break
        fi
        echo "$message" > pipe_demo
    done
    

    3、创建一个用于接收消息的脚本(例如receive_message.sh),在其中从命名管道中读取消息并显示:

    #!/bin/bash
    
    # 设置当前进程为接收消息的模式
    echo "Receiving mode. Press Ctrl+C to quit."
    
    # 无限循环,从命名管道中读取消息并显示
    while true; do
        if read message < pipe_demo; then
            echo "Received message: $message"
        fi
    done
    
    1. 给两个脚本文件添加执行权限:

      chmod +x send_message.sh receive_message.sh
      
    2. 打开两个终端窗口,在第一个窗口中运行发送消息的脚本:

      ./send_message.sh
      
    3. 在第二个窗口中运行接收消息的脚本:

      ./receive_message.sh
      

    现在,两个进程之间可以进行聊天模式了。一开始,进程1处于发送消息的模式,进程2处于接收消息的模式。当进程2接收到进程1的消息后,进程2转换为发送消息的模式,进程1转换为接收消息的模式。这样反复进行,直到您在发送模式下输入"exit"退出。

    评论 编辑记录

报告相同问题?