Linux 基本语句_11_无名管道文件复制

父子进程:

父子进程的变量之间存在着读时共享,写时复制原则

无名管道:

无名管道仅能用于有亲缘关系的进程之间通信如父子进程

代码:

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/fcntl.h>
#include <stdlib.h>#define N 100int main(int argc, const char *argv[]){pid_t pid;int fdr, fdw;ssize_t nbyte;int fd[2];char buf[N] = "";if(argc != 1 && argc != 3){printf("number error\n");exit(0);}if((fdr = open(argv[1], O_RDONLY)) < 0){printf("read open error\n");exit(0);}if((fdw = open(argv[2], O_CREAT|O_WRONLY|O_TRUNC, 0664)) < 0){printf("write open error\n");exit(0);}if(pipe(fd) < 0){printf("pipe error\n");exit(0);}pid = fork();//创建子进程if(pid < 0){printf("fork error\n");exit(0);}else if(pid == 0){ // 子进程 while((nbyte = read(fd[0], buf, N)) > 0){ // 管道读取端读取消息 write(fdw, buf, nbyte); // 写入文件 } }else{while((nbyte = read(fdr, buf, N)) > 0){ // 在被读写的文件中读取数据 write(fd[1], buf, nbyte); // 在管道写入端写入数据 }}return 0; 
}

解释:

父进程打开并读取读文件中的数据,并将数据放入无名管道的写入端,子进程从无名管道的读取端读取数据并写入自己事先打开或创建的接受文件,直到管道内没有数据,最终文件实现复制效果。

注意:read函数返还值为真实读取的数据,N为读取的数据

效果:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/194512.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基环树(pseudotree)入门

目录 无向基环树找环&#xff0c;[题目](https://www.luogu.com.cn/problem/P8655)拓扑排序找环并查集找环dfs找环 内向基环树[2876. 有向图访问计数](https://leetcode.cn/problems/count-visited-nodes-in-a-directed-graph/description/)[2127. 参加会议的最多员工数](https…

【Spring】之注解存取Bean对象

在本系列的上一篇文章中&#xff0c;我们已经了解了Spring的一些核心概念&#xff0c;并且还学习了Spring存取。但是我们发现在存取的过程中还是比较复杂&#xff0c;接下来我们将学习更为简单的Spring存取&#xff0c;其中涉及到的主要内容就是注解。并且在Spring家族的学习过…

Frames X for figma 组件库设计系统 Local Variables下载

简而言之&#xff0c;Frames X 是最出色、易于使用且文档齐全的Figma 设计系统之一。 它包括经过深思熟虑的设计指南和现成的组件&#xff0c;并且还提供一本全面的电子书&#xff0c;其中将详细解释如何使用该套件中包含的所有内容。 事实上&#xff0c;电子书使Frames X 与…

2023年【G1工业锅炉司炉】报名考试及G1工业锅炉司炉理论考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 G1工业锅炉司炉报名考试是安全生产模拟考试一点通生成的&#xff0c;G1工业锅炉司炉证模拟考试题库是根据G1工业锅炉司炉最新版教材汇编出G1工业锅炉司炉仿真模拟考试。2023年【G1工业锅炉司炉】报名考试及G1工业锅炉…

Nginx(七) root和alias的区别及详细测试

本篇文章只讲root和alias的区别&#xff0c;配置文件详解请参考 Nginx(三) 配置文件详解&#xff0c;下面开始进行测试。 Nginx配置如下&#xff1a; server {listen 8688 default_server;server_name www.read******.cn;access_log logs/access.log format2;root pages;set …

大数据Doris(二十五):Stream Load数据导入演示和其他导入案例

文章目录 数据导入演示和其他导入案例 一、数据导入演示

【每日一题】689. 三个无重叠子数组的最大和-2023.11.19

题目&#xff1a; 689. 三个无重叠子数组的最大和 给你一个整数数组 nums 和一个整数 k &#xff0c;找出三个长度为 k 、互不重叠、且全部数字和&#xff08;3 * k 项&#xff09;最大的子数组&#xff0c;并返回这三个子数组。 以下标的数组形式返回结果&#xff0c;数组中…

Java多线程核心技术第一阶段-Java多线程基础 02

接上篇&#xff1a;Java多线程核心技术第一阶段-Java多线程基础 01 3.3 清除中断状态的使用场景 this.interrupted()方法具有清除状态标志值的功能&#xff0c;借用此特性可以实现一些效果。 【示例3.3.1】在MyThread4线程中向list1和list2存放数据&#xff0c;基于单一职责原…

笔记55:长短期记忆网络 LSTM

本地笔记地址&#xff1a;D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章&#xff1a;动手学深度学习~现代循环神经网络 a a a a a a a a a

照片+制作照片书神器,效果太棒了!

随着数码相机的普及&#xff0c;越来越多的人喜欢用照片记录生活点滴。而制作一本精美的照片书&#xff0c;不仅可以保存珍贵的回忆&#xff0c;还能让照片更加美观。今天&#xff0c;就为大家推荐一款制作照片书神器&#xff0c;让您的回忆更加完美&#xff01; 一、产品介绍 …

HDFS、MapReduce原理--学习笔记

1.Hadoop框架 1.1框架与Hadoop架构简介 &#xff08;1&#xff09;广义解释 从广义上来说&#xff0c;随着大数据开发技术的快速发展与逐步成熟&#xff0c;在行业里&#xff0c;Hadoop可以泛指为&#xff1a;Hadoop生态圈。 也就是说&#xff0c;Hadoop指的是大数据生态圈整…

IDEA 搭建 SpringCloud 项目【超详细步骤】

文章目录 一、前言二、项目搭建1. 数据库准备2. 创建父工程3. 创建注册中心4. 服务注册5. 编写业务代码6. 服务拉取 一、前言 所谓微服务&#xff0c;就是要把整个业务模块拆分成多个各司其职的小模块&#xff0c;做到单一职责原则&#xff0c;不会重复开发相同的业务代码&…