c++ linux通过实现独立进程之间的通信和传递字符串 demo

简介: 的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方

通过管道实现C++ Linux独立进程之间的通信和字符串传递

在Linux环境下,独立进程之间的通信(IPC)可以通过多种方式实现,包括管道、消息队列、共享内存和套接字。本文将详细介绍如何使用管道(pipe)在C++中实现独立进程之间的通信,并传递字符串。

一、管道简介

管道是Linux系统提供的一种进程间通信机制。管道本质上是内核缓冲区,可以在进程之间传递数据。管道分为无名管道和有名管道(FIFO)。本文将使用无名管道实现进程间的字符串传递。

二、实现步骤

2.1 创建管道

使用 pipe()系统调用创建一个无名管道。pipe()会创建一个包含两个文件描述符的数组:pipefd[0]用于读取,pipefd[1]用于写入。

2.2 创建子进程

使用 fork()系统调用创建一个子进程。在父进程中写入数据到管道中,在子进程中读取数据并打印出来。

2.3 代码示例

以下是一个完整的C++代码示例,演示如何通过管道在父子进程之间传递字符串:

#include <iostream>
#include <unistd.h>
#include <cstring>
#include <sys/wait.h>

int main() {
    int pipefd[2];
    pid_t pid;
    char buffer[128];
    const char* message = "Hello from parent process!";

    // 创建管道
    if (pipe(pipefd) == -1) {
        perror("pipe");
        return 1;
    }

    // 创建子进程
    pid = fork();
    if (pid == -1) {
        perror("fork");
        return 1;
    }

    if (pid == 0) {
        // 子进程:从管道中读取数据
        close(pipefd[1]); // 关闭写端
        read(pipefd[0], buffer, sizeof(buffer));
        std::cout << "Child process received: " << buffer << std::endl;
        close(pipefd[0]); // 关闭读端
    } else {
        // 父进程:向管道中写入数据
        close(pipefd[0]); // 关闭读端
        write(pipefd[1], message, strlen(message) + 1);
        close(pipefd[1]); // 关闭写端

        // 等待子进程结束
        wait(NULL);
    }

    return 0;
}
​

2.4 代码解释

  1. 创建管道:使用 pipe(pipefd)创建管道,pipefd是一个包含两个文件描述符的数组。

  2. 创建子进程:使用 fork()创建子进程。在父进程中,fork()返回子进程的PID;在子进程中,fork()返回0。

  3. 子进程读取数据

    • 关闭管道的写端(pipefd[1])。
    • 使用 read(pipefd[0], buffer, sizeof(buffer))从管道中读取数据。
    • 打印读取到的数据。
    • 关闭管道的读端(pipefd[0])。
  4. 父进程写入数据

    • 关闭管道的读端(pipefd[0])。
    • 使用 write(pipefd[1], message, strlen(message) + 1)向管道中写入数据。
    • 关闭管道的写端(pipefd[1])。
    • 使用 wait(NULL)等待子进程结束。

三、运行结果

编译并运行上述代码,应该会看到如下输出:

Child process received: Hello from parent process!
​

这表明父进程成功地通过管道将字符串传递给了子进程。

四、总结

通过本文的介绍,我们详细讲解了如何使用管道在C++中实现独立进程之间的通信,并成功地传递字符串。管道是一种简单而高效的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。

在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方

目录
相关文章
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
4天前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
2004 103
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
11天前
|
Linux iOS开发 MacOS
deepseek部署的详细步骤和方法,基于Ollama获取顶级推理能力!
DeepSeek基于Ollama部署教程,助你免费获取顶级推理能力。首先访问ollama.com下载并安装适用于macOS、Linux或Windows的Ollama版本。运行Ollama后,在官网搜索“deepseek”,选择适合你电脑配置的模型大小(如1.5b、7b等)。通过终端命令(如ollama run deepseek-r1:1.5b)启动模型,等待下载完成即可开始使用。退出模型时输入/bye。详细步骤如下图所示,轻松打造你的最强大脑。
8598 86
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
阿里云与企业共筑容器供应链安全
171370 17
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
150307 32
|
1天前
|
人工智能 自然语言处理 JavaScript
宜搭上新,DeepSeek 插件来了!
钉钉宜搭近日上线了DeepSeek插件,无需编写复杂代码,普通用户也能轻松调用强大的AI大模型能力。安装后,平台新增「AI生成」组件,支持创意内容生成、JS代码编译、工作汇报等场景,大幅提升工作效率。快来体验这一高效智能的办公方式吧!
899 5
|
3天前
|
API 开发工具 Python
阿里云PAI部署DeepSeek及调用
本文介绍如何在阿里云PAI EAS上部署DeepSeek模型,涵盖7B模型的部署、SDK和API调用。7B模型只需一张A10显卡,部署时间约10分钟。文章详细展示了模型信息查看、在线调试及通过OpenAI SDK和Python Requests进行调用的步骤,并附有测试结果和参考文档链接。
665 5
阿里云PAI部署DeepSeek及调用
|
4天前
|
机器学习/深度学习 人工智能 并行计算
一文了解火爆的DeepSeek R1 | AIGC
DeepSeek R1是由DeepSeek公司推出的一款基于强化学习的开源推理模型,无需依赖监督微调或人工标注数据。它在数学、代码和自然语言推理任务上表现出色,具备低成本、高效率和多语言支持等优势,广泛应用于教育辅导、金融分析等领域。DeepSeek R1通过长链推理、多语言支持和高效部署等功能,显著提升了复杂任务的推理准确性,并且其创新的群体相对策略优化(GRPO)算法进一步提高了训练效率和稳定性。此外,DeepSeek R1的成本低至OpenAI同类产品的3%左右,为用户提供了更高的性价比。
796 10
|
11天前
|
人工智能 自然语言处理 Java
Spring AI,搭建个人AI助手
本期主要是实操性内容,聊聊AI大模型,并使用Spring AI搭建属于自己的AI助手、知识库。本期所需的演示源码笔者托管在Gitee上(https://gitee.com/catoncloud/spring-ai-demo),读者朋友可自行查阅。
939 41
Spring AI,搭建个人AI助手
|
2天前
|
JavaScript 前端开发 API
低代码+阿里云部署版 DeepSeek,10 分钟速成编剧大师
阿里云部署版DeepSeek重磅发布,钉钉宜搭低代码平台已首发适配,推出官方连接器。用户可轻松调用DeepSeek R1、V3及蒸馏系列模型。通过宜搭低代码技术,结合DeepSeek大模型,仅需10分钟即可制作编剧大师应用。
323 18

热门文章

最新文章