当前位置: 首页 > news >正文

Linux系统学习Day1——虚拟机间的讲话

一、同一虚拟机中不同用户间的对话

(一)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系统的核心功能有了更直观的认识,为今后的系统编程和项目开发打下了坚实的基础

相关文章:

  • 五子棋游戏开发:静态资源的重要性与设计思路
  • WPF 资源加载问题:真是 XAML 的锅吗?
  • [MySQL数据库] InnoDB存储引擎(二) : 磁盘结构详解
  • 智慧景区能源管理解决方案,为旅游“升温”保驾护航
  • 不用第三方库调用DeepSeek
  • Go语言从零构建SQL数据库(6) - sql解析器(番外)- *号的处理
  • React 列表渲染
  • 算法(0)-时间复杂度-二分法的详解与扩展-对数器-C++版
  • cmake阅读笔记
  • HTTP代理:内容分发战场上的「隐形指挥官」
  • Lettuce与Springboot集成使用
  • 蓝桥杯-数字诗意
  • MTK-Android12-13 屏幕永不休眠功能实现
  • 落子宜宾:全方位解析树莓集团现状布局
  • Vue3+Vite+TypeScript+Element Plus开发-06.Header响应式菜单缩展
  • AIDD-人工智能药物设计-TCMP-12个公开的中药数据库
  • window上 docker使用ros2开发并usbip共享usb设备
  • C# 中的 nameof 表达式:用法详解与最佳实践
  • Vue3 + Vite + TS,使用 Web Worker,web worker进阶 hooks
  • Qt中自定义插件和库(1)
  • 做网站的技术理论/常见的网络营销方法有哪些
  • 大连开发区做网站/天津短视频seo
  • 微魔方建站/互联网营销师怎么考
  • 网站建设学费多少钱/网上开店如何推广自己的网店
  • 网站安全建设目的/seo中国
  • 做商城网站在哪里注册营业执照/凡科建站怎么用