0731作业+梳理

news2024/12/23 10:23:03

一、作业

1.用两个进程完成拷贝

代码:

#include<myhead.h>
//定义一个求文件长度函数
int line(const char *pd1,const char *pd2)
{
    int fd1 = -1;
    int fd2 = -1;
    //以只读形式打开源文件
    if((fd1 = open(pd1,O_RDONLY))==-1)
    {
        perror("open fd1 error");
        return -1;
    }
    //以创建形式打开目标文件(这里创建刷新了下面拷贝时只需要用只读打开就行)
    if((fd2 = open(pd2,O_WRONLY|O_CREAT|O_TRUNC,0664))==-1)
    {
        perror("open fd2 error");
        return -1;
    }
    //求源文件长度函数
    int len = lseek(fd1,0,SEEK_END);
    //关闭文件
    close(fd1);
    close(fd2);

    return len;
}
//定义一个拷贝函数
int copy(const char *pd1,const char*pd2,int start,int len)
{
    int fd1 = -1;
    int fd2 = -1;
    //以只读形式打开源文件
    if((fd1 = open(pd1,O_RDONLY))==-1)
    {
        perror("open fd1 error");
        return -1;
    }
    //以只写的形式打开目标文件
    if((fd2 = open(pd2,O_WRONLY))==-1)
    {
        perror("open fd2 error");
        return -1;
    }
    //光标位置
    lseek(fd1,start,SEEK_SET);
    lseek(fd2,start,SEEK_SET);
    //定义搬运工
    char buf[128] = "";
    int res = 0;
    int sum = 0;
    //拷贝
    while(1)
    {
        res = read(fd1,buf,sizeof(buf));
        sum += res;//将读取个数累加
        if(res == 0||sum>len)//文件读取结束
        {
            write(fd2,buf,res-sum+len);//父进程将最后一次拷贝结束
            break;
        }
        write(fd2,buf,res);
    }
    printf("拷贝成功\n");
    //关闭文件
    close(fd1);
    close(fd2);
    return 0;
}

int main(int argc, const char *argv[])
{
    //判断文件个数
    if(argc != 3)
    {
        perror("input file error");
        return -1;
    }
    //定义一个数接收源文件长度
    int len = 0;
    len = line(argv[1],argv[2]);

    //创建一个进程
    pid_t pid = 0;
    pid = fork();
    if(pid>0)
    {
        //父进程拷贝前一半内容
        copy(argv[1],argv[2],0,len/2);
    }
    else if(pid==0)
    {
        //子进程拷贝后一半
        copy(argv[1],argv[2],len/2,len-len/2);
        exit(EXIT_SUCCESS);
    }
    else
    {
        perror("fork error");
        return -1;
    }
    //回收子进程
    wait(NULL);
    printf("子进程回收资源结束\n");
    return 0;
}
 

运行结果:

二、思维导图(进程概念即编程相关内容)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人最大的内耗,是不肯放过自己

你是否也有过这样的经历&#xff1a; 对别人漫不经心的一句话就琢磨很久&#xff0c;生怕产生隔阂&#xff1b;对自己曾经犯过的错误念念不忘&#xff0c;始终无法释怀&#xff1b;工作里出现一点小失误&#xff0c;便整宿翻来覆去难以入眠......每天陷在迷茫、焦虑、恐慌的情…

matlab 2022a 安装教程

下载安装包 &#xff0c;多个压缩包&#xff0c;依次解压 第一步 第二步 2、输入文件安装密钥&#xff1a;“50874-33247-14209-37962-45495-25133-28159-33348-18070-60881-29843-35694-31780-18077-36759-35464-51270-19436-54668-35284-27811-01134-26918-26782-54088” 50…

二百四十九、Linux——修改ulimit限制数量:打开文件的最大数量和用户进程的最大数量

一、目的 在安装OceanBase时脚本报错 [ERROR] OBD-1007: (127.0.0.1) The value of the ulimit parameter "open files" must not be less than 20000 (Current value: 1024), Please execute echo -e "* soft nofile 20000\n* hard nofile 20000" >&…

TiDB系列之:TiCDC同步TiDB数据库数据到Kafka集群Topic

TiDB系列之&#xff1a;TiCDC同步TiDB数据库数据到Kafka集群Topic 一、Changefeed 概述Changefeed 状态流转操作 Changefeed 二、同步数据到Kafka创建同步任务&#xff0c;复制增量数据 KafkaSink URI 配置 kafka最佳实践TiCDC 使用 Kafka 的认证与授权TiCDC 集成 Kafka Connec…

移动硬盘有盘符却难启?数据恢复全攻略

现象解析&#xff1a;移动硬盘有盘符打不开的谜团 在日常的数字生活中&#xff0c;移动硬盘作为数据存储与传输的重要工具&#xff0c;扮演着不可或缺的角色。然而&#xff0c;当用户遇到移动硬盘在系统中显示盘符却无法正常访问的情况时&#xff0c;无疑会令人感到焦头烂额。…

hackme漏洞打靶

1.安装好靶机后点击启动进入这样的一个页面 然后我们就要去找这个靶机的IP地址&#xff0c;首先将该虚拟机网卡设置为net模式&#xff0c;然后在物理机中查看自己ip&#xff0c;看看vmnet8的地址c段是什么&#xff0c;我这里是209&#xff0c;然后用工具去扫描该c段下哪个ip开放…

离乡路远,归途已断

首发于我的个人独立博客 guqing’s blog 每次踏上回乡的路&#xff0c;我心中总有一种难以言喻的情感。故乡&#xff0c;那片孕育我成长的土地&#xff0c;依然静静地躺在那儿&#xff0c;似乎未曾改变。 然而&#xff0c;每次回到家乡&#xff0c;我都能感受到微妙的变化&…

探索七款前沿UI设计软件:创新与实践

之前我们分享了制作原型的有用工具。制作完原型后&#xff0c;我们需要优化界面&#xff0c;这就是 UI 设计师的任务了。UI 设计软件对设计师来说非常重要。UI 设计工具的使用是否直接影响到最终结果的质量&#xff0c;所以有人会问&#xff1a;UI 界面设计使用什么软件&#x…

【切面编程】自定义注解实现操作日志

创建一个项目工程 引入相关依赖 <!-- aop切面 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> <!-- lombok --> <dependency><gro…

24导游证报名照片要求是什么❓整理好了❗

24导游证报名照片要求是什么❓整理好了❗ 导游资格考试今天开始报名啦&#xff01; ⚠️考生们注意&#xff0c;需要上传免冠证件照、身份证扫描件、学历证明等照片信息&#xff01; ⚠️这里需要注意一下上传的照片文件信息规格&#xff0c;否则上传失败&#xff0c;无法完…

中国星坤耳机插座系列:空间与音质的体验升级

在现代电子设备日益普及的今天&#xff0c;耳机插座作为连接音频设备与用户的重要接口&#xff0c;其设计和性能直接影响着用户的听觉体验。中国星坤耳机插座以其精巧的设计和卓越的性能&#xff0c;为用户提供了既节省空间又保证音质的解决方案。本文将探讨星坤耳机插座的特点…

Vue3_对接声网实时音视频_多人视频会议

目录 一、声网 1.注册账号 2.新建项目 二、实时音视频集成 1.声网CDN集成 2.iframe嵌入html 3.自定义UI集成 4.提高进入房间速度 web项目需要实现一个多人会议&#xff0c;对接的声网的灵动课堂。在这里说一下对接流程。 一、声网 声网成立于2014年&#xff0c;是全球…

知乎信息流广告怎么投?一文读懂知乎广告开户及投放!

作为中国领先的问答社区&#xff0c;知乎以其高质量的内容和活跃的用户群体成为了众多品牌青睐的营销阵地。为了帮助企业更高效地利用知乎平台进行品牌推广&#xff0c;云衔科技提供了全方位的知乎广告开户及代运营服务&#xff0c;助力您的品牌在知乎上实现快速增长。 一、知…

提单和提货单有什么区别❓一文读懂‼️

提货单与提单的区别 在国际贸易和物流领域中&#xff0c;提货单&#xff08;D/O&#xff09;和提单&#xff08;B/L&#xff09;是两个关键的单据&#xff0c;它们在货物清关和提货过程中扮演着重要角色。以下是对这两个单据的详细解释和它们之间的区别。 提货单&#xff08;…

pdf文件怎么删除页面?看完就能学会的四种删除pdf页面方法!

pdf文件怎么删除页面&#xff1f;在日常使用PDF文档的过程中&#xff0c;我们时常会遇到一些没必要存在的页面&#xff0c;保留这些页面可能带来多重不利影响&#xff0c;首先它们会打断阅读的流畅性&#xff0c;这会让人在阅读时感到突兀与不适&#xff0c;其次&#xff0c;这…

CentOS7下搭建配置SVN服务器

1、通过yum安装subversion&#xff0c;根据提示完成安装 <span style"color:#333333"><span style"background-color:#f5f5f5">sudo yum install subversion</span></span> subversion安装在/bin目录 <span style"colo…

蓝桥杯 Python 研究生组-2023-省赛-工作时长

蓝桥账户中心https://www.lanqiao.cn/problems/3494/learning/ 问题描述 小蓝手里有一份 20222022 年度自己的上班打卡记录文件&#xff0c;文件包含若干条打卡记录&#xff0c;每条记录的格式均为“yyyy-MM-dd HH:mm:ssyyyy-MM-dd HH:mm:ss”&#xff0c;即按照年-月-日 时:…

专业级翻译解决方案:2024年商务翻译工具精选

现在科技发达了&#xff0c;不会外语也不怕了&#xff08;因为可以借助很多翻译工具解决这个头疼的问题啦&#xff09;。如果说到翻译你想到的还是百度翻译&#xff0c;那你可以拓宽一些翻译工具待用库啦。现在有不少多功能&#xff0c;好用的翻译软件咯。 1.福昕在线翻译 链…

矿用综采工作面软件开发

故障诊断算法软件界面设计实时监测故障机理分析实时故障诊断 1.软件原型图 2.通信协议

SpringBoot集成GraalVM创建高性能原生镜像

1. GraalVM 原生镜像的介绍 GraalVM原生镜像为部署和运行Java应用程序提供了一种新的方式。与Java虚拟机相比&#xff0c;原生镜像可以以更小的内存占用和更快的启动时间运行。 它们非常适用于使用容器镜像部署的应用程序&#xff0c;当与 "功能即服务"&#xff08…