企业建站找哪家廊坊网站排名优化公司哪家好
一、同一虚拟机中不同用户间的对话
(一)talk程序安装
在Ubuntu上,运行以下命令安装 talk 程序:
sudo apt update
sudo apt installbsd-talk
(二)启动talk程序
- 在服务器上启动 talk 服务
sudo systemctl start talk
-
允许 talk 服务通过防火墙
sudo ufw allow talk
(三)使用talk程序聊天
执行以下命令即可与对方进行通信
talk 名字
效果:
二、编程实现同一虚拟机中不同终端间的信息收发
(一)创建管道文件
1、管道文件:
管道文件(FIFO)是一种特殊的文件类型,用于在进程之间进行单向数据通信。它允许可执行程序通过文件系统进行数据传递,而无需直接交互。管道文件采用先进先出(FIFO)的方式处理数据,确保数据按顺序传输。
2、具体操作
执行以下代码创建管道文件:
mkfifo mypipe
(二)代码编写
创建两个C源文件:sender.c和receiver.c
- 执行以下命令创建C源文件:
nano sender.c
nano receive.c
在sender.c文件中写入以下代码:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>int main() {int fd = open("mypipe", O_WRONLY);if (fd == -1) {perror("open");return 1;}char buffer[100];printf("Enter message: ");fgets(buffer, sizeof(buffer), stdin);write(fd, buffer, strlen(buffer)+1);close(fd);return 0;
}
在receive.c文件中写入以下代码:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>int main() {int fd = open("mypipe", O_RDONLY);if (fd == -1) {perror("open");return 1;}char buffer[100];read(fd, buffer, sizeof(buffer));printf("Received message: %s", buffer);close(fd);return 0;
}
- 编译代码
执行以下代码编译上述两个C源文件:
gcc sender.c -o sender
gcc receiver.c -o receiver
(三)程序运行
1、打开终端1运行接收端:
- 通过以下命令运行代码
./receiver
2、在另一个终端中运行发送端
- 通过以下命令运行代码
./sender
结果如下所示:
- 终端1:
- 终端2:
三、总结
通过本次实验,我对Linux系统中不同用户间通信的方式有了更深入的理解。首先,通过安装和使用talk程序,我成功实现了同一虚拟机中不同用户之间的实时对话,这让我对传统的文本聊天工具有了新的认识。其次,通过创建管道文件(FIFO)并编写C程序,我实现了不同终端间的信息收发,进一步掌握了进程间通信的基本原理和实现方法。实验过程中,我不仅巩固了对Linux命令和编程的理解,还提升了调试和解决问题的能力。这些实践让我对Linux系统的核心功能有了更直观的认识,为今后的系统编程和项目开发打下了坚实的基础