作业要求:
使用管道通信的方式,实现两个进程可以进行聊天模式,即一开始进程1处于发送信息的模式,进程2处于接收信息的模式,进程2接收到进程1的消息后,进程2转化为发送信息的模式,进程1转化为接收信息的模式....一直反复进行
作业要求:
使用管道通信的方式,实现两个进程可以进行聊天模式,即一开始进程1处于发送信息的模式,进程2处于接收信息的模式,进程2接收到进程1的消息后,进程2转化为发送信息的模式,进程1转化为接收信息的模式....一直反复进行
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
给两个脚本文件添加执行权限:
chmod +x send_message.sh receive_message.sh
打开两个终端窗口,在第一个窗口中运行发送消息的脚本:
./send_message.sh
在第二个窗口中运行接收消息的脚本:
./receive_message.sh
现在,两个进程之间可以进行聊天模式了。一开始,进程1处于发送消息的模式,进程2处于接收消息的模式。当进程2接收到进程1的消息后,进程2转换为发送消息的模式,进程1转换为接收消息的模式。这样反复进行,直到您在发送模式下输入"exit"退出。