坐牢二十天 20240731(IO)

news2024/11/15 8:28:08

一.作业

1> 使用父子进程完成两个文件的拷贝

父进程拷贝前一半内容,子进程拷贝后一半内容

子进程结束后退出,父进程回收子进程的资源

#include <myhead.h>
//定义求源文件长度的函数
int lenmain(const char *src,const char *dst)
{
    int fd1=0;//源文件
    int fd2=0;//目标文件
    if (-1==(fd1=open(src,O_RDONLY))||-1==(fd2=open(dst,O_WRONLY|O_CREAT|O_TRUNC,0664)))
    {
      printf("求长度失败失败\n");
      return -1;
    }
    //求文件长度
    int len=lseek(fd1,0,SEEK_END);
    close(fd1);
    close(fd2);
    return len;
}
//定义拷贝函数
int kaobei(const char*src,const char*dst,int start,int len)
{
    int fd1=0;//源文件
    int fd2=0;//目标文件
    if (-1==(fd1=open(src,O_RDONLY))||-1==(fd2=open(dst, O_WRONLY)))
    {
      printf("拷贝失败\n");
      return -1;
    }
    //把光标定到要拷贝的位置
    lseek(fd1, start, SEEK_SET);
    lseek(fd2, start, SEEK_SET);
    char buf1[1]="";//定义容器存储
    int sum=0;//表示读取个数
    while (1)
    {
      int res=read(fd1,buf1,sizeof(buf1));//先从fd1读取数据
      sum+=res;
      if (res==0&&sum>=len)//如果读取数据个数为0则停止循环
      {                   //如果读到指定位置停止
        break;
      }
      write(fd2,buf1,res);
    }
    //关闭文件
    close(fd1);
    close(fd2);
    printf("拷贝成功\n");
    return 0;
}
/***************主函数*******************/
int main(int argc, char const *argv[])
{
    if (argc!=3)
    {
      printf("input file error!!!\n");
      printf("usage:./a.out filename\n");
      return -1;
    }
    int len=lenmain(argv[1],argv[2]);
    pid_t pid = -1;//定义变量存储创建的进程id号
    pid =fork();//创建一个子进程
    //对pid进行判断
	if (pid>0)
    {
    //调用拷贝函数
    kaobei(argv[1],argv[2],0,len/2);//开头到中间
    }else if(pid==0)
    {
    //调用拷贝函数   
    kaobei(argv[1],argv[2],len/2,len);//中间到最后
    sleep(3);
    _exit(EXIT_SUCCESS);
    }else
    {
        perror("fork error");
        return -1;
    }
    //回收子进程资源
    sleep(5);
    waitpid(-1,NULL,WNOHANG);//非阻塞
    printf("回收子进程资源成功\n");
    return 0;
}

二.思维导图

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

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

相关文章

各类基于虚拟主机的应用及上线商城系统

一、基于域名访问 查看没有空行&#xff0c;没有注释的文件内容 [rootweb ~]# grep -Ev "#|^$" /usr/local/nginx/conf/nginx.conf [rootweb ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak [rootweb ~]# grep -Ev "#|^$"…

temu插件丨temu插件下载免费体验-特喵数据

在当今这个日新月异的电商时代&#xff0c;每一个细微的洞察都可能是商家决胜千里的关键。随着跨境电商平台的蓬勃兴起&#xff0c;Temu作为一股不可忽视的新兴力量&#xff0c;正以其独特的模式和强大的数据分析能力&#xff0c;引领着行业的新风尚。接下来看看让您的Temu店铺…

解决TensorFlow非法指令 (核心已转储)问题

背景 测试环境使用TensorFlow 1.14.0运行实体抽取和事项要素项目正常&#xff0c;打包项目和miniconda3环境进行部署&#xff0c;进行predict时报错。然后使用dockerfile生成环境镜像进行部署&#xff0c;发现仍报错。最后查资料解决该问题。 Using TensorFlow backend. 非法指…

《CSS创意项目实战指南》:点亮网页,从实战中掌握CSS的无限创意

CSS创意项目实战指南 在数字时代&#xff0c;网页不仅是信息的载体&#xff0c;更是艺术与技术的融合体。通过CSS&#xff0c;你可以将平凡的网页转变为引人入胜的视觉盛宴&#xff0c;让用户体验跃升至全新高度。《CSS创意项目实战指南》正是这样一本引领你探索CSS无限可能的…

【全志H616开发】SQLite打开/创建数据库的C接口

文章目录 打开/创建数据库的C接口函数介绍sqlite3_open函数sqlite3_close函数sqlite3_errmsg函数 代码示例 打开/创建数据库的C接口函数介绍 sqlite3_open函数 sqlite3_open 是 SQLite 数据库库中的一个函数&#xff0c;用于打开一个新的数据库连接。如果指定的数据库文件不存…

大厂linux面试题攻略一之网络基础

一、网络基础类面试题 1.简述ISO/OSI七层模型&#xff08;理论模型&#xff09;的分层与作用 ISO&#xff1a;国际标准化组织 OSI&#xff1a;开放系统互联 第7层应用层&#xff1a;为用户提供服务&#xff0c;给用户一个操作界面 第6层表示层&#xff1a;数据提供表示、加密…

从零入门 AI for Science(AI+药物) #Datawhale AI 夏令营 Task2

书接上回: 从零入门 AI for Science&#xff08;AI药物) #Datawhale AI 夏令营 Task2 前面了解了赛题&#xff0c;这个主要讲baseline代码&#xff0c;入门RNN和特征工程 解读官方baseline set_random_seed 统一设置随机种子 def set_random_seed(seed):"""设…

一万亿token!34亿张图像,扩大10倍!史上最大开源多模态数据集MINT-1T发布!

众所周知&#xff0c;现在训练AI最需要的是什么&#xff1f; 数据&#xff0c;数据&#xff0c;还是数据。——毕竟只有让AI学好了&#xff0c;AI才能好好地回答你的问题&#xff0c;否则就会答非所问。 但是喂给AI的数据&#xff0c;现在和GPU一样&#xff0c;成了紧缺资源。…

Java:类集(List,Vector,Set,HashMap)

类集:就是一个动态的对象数组,是对一些实现好的数据结构的包装,这样在使用时会非常方便,而且最重要的是类集框架本身不受对象数组长度的限制。 类集的特性:(1)这种框架是高性能的,对基本类集(动态数组、链接表、树和散列表)的实现是高效率的。所以一般很少需要人工对…

汇舟问卷:从了解国外问卷工作室开始!

大家好&#xff0c;我是汇舟问卷。上个月有个互联网大厂上班的经理联系到我&#xff0c;向我们咨询了关于国外问卷调查工作室的情况。 他对当时稳定的生活状态感到担忧担忧&#xff1a;每月稳定的收入虽然足以应对家庭开支&#xff0c;却难以积蓄足够的资金&#xff0c;尤其是…

公布一批神马爬虫IP地址,真实采集数据

一、数据来源&#xff1a; 1、这批神马爬虫IP来源于尚贤达猎头公司网站采集数据&#xff1b; 2、数据采集时间段&#xff1a;2023年10月-2024年1月&#xff1b; 3、判断标准&#xff1a;主要根据用户代理是否包含“YisouSpider”&#xff0c;具体IP没做核实。 二、神马爬虫主…

Javascript前端基础面试(十)

MVVM Vue MVVM这一篇就够啦&#xff01;_vue r mvvm-CSDN博客 点容器内的图标,图标边框变成border 1px solid red&#xff0c;点空白处重置 <div id"container"> <img src"icon.png" alt"Icon" class"icon"> <!…

SpringSecurity登录认证流程及源码分析

目录 一 作用 二 流程及源码分析 一 作用 spring security作为spring家族中的一员&#xff0c;它的主要作用有两个&#xff0c;分别是认证和授权。 我们以前在实现登录功能的时候&#xff0c;前端会传来用户名和密码&#xff0c;然后我们根据前端传来的数据从用户表中的数据进…

【AI大模型】分布式训练:深入探索与实践优化

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 一、分布式训练的核心原理二、技术细节与实现框架1. 数据并行与模型并行2. 主流框架 三、面临的挑战与优化策略1. 通信开销2. 数据一致性3. 负载均衡 4.使用示例示例一&#xff1a;TensorFlow中的数据…

深入解析Kubernetes(K8s)的核心技术与应用

一、引言 在云计算和容器化技术迅猛发展的今天&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;凭借其强大的容器编排和管理能力&#xff0c;成为了云原生时代不可或缺的基础设施。本文旨在深入探讨Kubernetes的核心技术、应用场景、优势与挑战&#xff0c;以及如何在实…

图创价值 Live——解锁能源新未来!能源行业图技术解决方案深度探索

随着全球能源结构的深刻变革&#xff0c;能源系统正面临着前所未有的挑战与机遇。新能源的迅猛发展、电力市场化的推进以及电网调度的复杂性不断升级&#xff0c;都对能源系统的智能化、高效化提出了更高要求。为此&#xff0c;我们特别邀请了到了悦数解决方案专家-鲍翰林&…

数据结构第1天作业 7月31日

2.3按位置操作 1&#xff09;按照位置插入数据 void Insert_seqlist_single(Seqlist* sq,int arr_sub,int num){if(sq->posN ){ //判断顺序列表是否为满printf("error");return;}else if(arr_sub<0||arr_sub>sq->pos){printf("error…

微信小程序【五】好玩的点击展开弹框功能

弹出效果 步骤一、index.js步骤二、index.json步骤三、index.wxml步骤四、index.wxss 效果简述&#xff1a;恶搞的好玩点击效果&#xff0c;点击后展开 步骤一、index.js Page({data: {isPlaying: true,animationClass: music-icon,show_menu: false, // 菜单是否激活show_p…

异构算力的调度策略解析与实现

随着云计算、大数据和人工智能技术的飞速发展&#xff0c;异构算力调度成为了一个日益重要的课题。异构算力调度是指针对不同类型的计算资源&#xff08;如CPU、GPU、FPGA等&#xff09;进行合理分配与调度&#xff0c;以提高计算资源的利用率、降低功耗并加速任务执行。本文将…

浮点数的二进制表示

浮点数的二进制表示 浮点数在C/C中对应 float 和 double 类型&#xff0c;我们有必要知道浮点数在计算机中实际存储方式。 IEEE754规定&#xff1a; 单精度浮点数字长32位&#xff0c;尾数长度23&#xff0c;指数长度8,指数偏移量127&#xff1b;双精度浮点数字长64位&#xf…