4.3 IO day5

news2024/10/5 21:19:21

1:实现文件夹的拷贝功能 注意判断被拷贝的文件夹是否存在,如果不存在则提前创建,创建文件夹的函数为 mkdir 不考虑递归拷贝的问题

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/wait.h>
#include <pthread.h>
int main(int argc,const char *argv[])
{
    char jia[128]="/home/ubuntu/io_d5/4.3/";
    char jia_back[128]="/home/ubuntu/io_d5/4.3_cp/";
    DIR *fp1=opendir(jia);
    if(NULL==fp1)
    {
        perror("opendir");                                 
        return 1;
    }
    DIR *fp2=opendir(jia_back);
    if(NULL==fp2)
    {
        mkdir(jia_back,0777);
    }
    while(1)
    {
        struct dirent *Dir=readdir(fp1);
        if(NULL==Dir)break;
        char rdf[128];
        strcpy(rdf,Dir->d_name);
        printf("%s\n",rdf);
        if((strcmp(rdf,".") && strcmp(rdf,"..")))
        {
            printf("------\n");
            char rdf_file[128]={0};
            strcat(rdf_file,jia);
            strcat(rdf_file,rdf);
            char wrf_back[128]={0};
            strcat(wrf_back,jia_back);
            strcat(wrf_back,rdf);
            int fd1=open(rdf_file,O_RDONLY);
            perror("open");
            int fd2=open(wrf_back,O_CREAT|O_WRONLY,0664);
            perror("open");
            while(1)
            {
                char str[256]={0};
                int res=read(fd1,str,sizeof(str));
                perror("read");
                if(res==0){break;}
                write(fd2,str,res);
            }
            close(fd1);
            close(fd2);
        }
    }
    printf("ok\n");
    closedir(fp1);
    closedir(fp2);
    return 0;
}

2:有如下结构体 struct Student{ char name[20]; int age; double math_score; double chinese_score; double english_score; double physical_score; double chemical_score; double biological_score; } 申请一个该结构体数组,使用 fprintf / fscanf,将该结构体数组中的所有数据,写入文件中,然后重新加载到数组中 同样的操作,使用fwrite/fread 和 write/read再做一遍

3:创建一对父进程,在父进程能够向子进程发送消息的基础上发 同时子进程也能够向父进程发送消息

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc,const char *argv[])
{
    pid_t res=fork();
    if(res>0)
    {
        int fd=open("/home/ubuntu/io_d5/4.3/1.txt",O_CREAT|O_TRUNC|O_WRONLY,0664);
        char str[100]={0};
        int size=0;
        printf("父进程:请输入:");
        scanf("%100s",str);
        while(getchar()!=10);
        size=strlen(str);
        write(fd,str,size);
        close(fd);
        wait(0);
        int fa=open("/home/ubuntu/io_d5/4.3/2.txt",O_RDONLY);
        while(1)
        {
            char str[100]={0};
            int res=read(fa,str,100);
            if(res!=0)
            {
                printf("父进程:读取到的消息为:%s\n",str);
                break;
            }
        }
    }
    else if(res==0)                                                                           
    {
        int fd=open("/home/ubuntu/io_d5/4.3/1.txt",O_RDONLY);
        while(1)
        {
            char str[100]={0};
            int res=read(fd,str,100);
            if(res!=0)
            {
                printf("子进程:读取到的消息为:%s\n",str);
                break;
            }
        }
        close(fd);
        int fa=open("/home/ubuntu/io_d5/4.3/2.txt",O_CREAT|O_TRUNC|O_WRONLY,0664);
        char str[100]={0};
        int size=0LEAR
        printf("子进程:请输入:");
        scanf("%100s",str);
        while(getchar()!=10);
        size=strlen(str);
        write(fa,str,size);
        close(fa);
    }
    else if(res==-1)
    {
        perror("fork");return 1;
    }
    return 0;
}

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

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

相关文章

蓝桥杯刷题-09-三国游戏-贪心⭐⭐⭐

蓝桥杯2023年第十四届省赛真题-三国游戏 小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件&#xff0c;每个事件之间相互独立且最多只会发生一次&#xff0c;当第 i 个事件发生时会分别让 X, Y,…

清明作业 c++

1.封装一个类&#xff0c;实现对一个数求累和阶乘质数 #include <iostream>using namespace std; int mproduct(int a){if(a>1){return a*mproduct((a-1));}else{return 1;} } class number{int a; public:number():a(5){};number(int a):a(a){}void set(int a){thi…

开源的页面生成器:拖拽即可生成小程序、H5页面和网站

星搭精卫 MtBird 是一款低代码可视化页面生成器&#xff0c;可以帮助用户以可视化的形式搭建网页、小程序和表单等应用。 使用这个生成器&#xff0c;不需要代码就可以生成小程序、H5页面和网站&#xff0c;拖拽操作、样式配置快速生成页面应用&#xff0c;数据可视化接入&…

2024年【道路运输企业安全生产管理人员】找解析及道路运输企业安全生产管理人员作业考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 道路运输企业安全生产管理人员找解析参考答案及道路运输企业安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及道路运输企业安全生产管理人员操作证已考过的学员汇总&#xff0c;相对有效帮助道路运输…

C++高频面试知识总结 part3

哈希 1.哈希表为什么快&#xff1f;2.哈希冲突解决方法3.哈希表扩容流程4.哈希表扩容太多次&#xff0c;需要遍历所有元素&#xff0c;如何优化&#xff1f;5.渐进式扩容为何可以正确访问哈希表&#xff1f; 1.哈希表为什么快&#xff1f; 哈希表&#xff08;Hash table&#…

告别旧IP,更换网络ip地址教程分享

在数字化世界中&#xff0c;IP地址作为每个网络设备的标识符&#xff0c;扮演着至关重要的角色。它不仅是设备在网络中的“门牌号”&#xff0c;还影响着网络连接的稳定性、安全性和数据传输效率。因此&#xff0c;在某些情况下&#xff0c;更换网络IP地址成为必要操作。虎观代…

平台规则的改变会影响低价治理结果吗

许多品牌在做低价链接投诉时&#xff0c;会用一套自己的标准去做&#xff0c;但如果无视平台规则&#xff0c;会出现非常多不好的结果&#xff0c;比如帐号投诉成功率被拉低&#xff0c;会直接影响后续链接的投诉时效和成功率&#xff0c;同时因为不尊重平台规则&#xff0c;而…

美国洛杉矶大带宽服务器带宽堵塞解决方法

随着互联网的快速发展&#xff0c;大带宽服务器成为了现代企业和个人进行数据传输、存储和处理的关键设施。然而&#xff0c;在美国洛杉矶等大城市&#xff0c;由于网络流量的激增、不合理的网络配置以及网络攻击等多种原因&#xff0c;大带宽服务器带宽堵塞问题日益凸显。本文…

【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历

先序遍历&#xff1a;根-左-右中序遍历&#xff1a;左-根-右后序遍历&#xff1a;左-右-根 94. 二叉树的中序遍历 题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3…

基于springboot+vue+Mysql的教学视频点播系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

洛谷 1126.机器人搬重物

思路&#xff1a;BFS 这道BFS可谓是细节爆炸&#xff0c;对于编程能力和判断条件的能力的考察非常之大。 对于这道题&#xff0c;我们还需要额外考虑一些因素&#xff0c;那就是对于障碍物的考虑和机器人方位的考虑。 首先我们看第一个问题&#xff0c;就是对于障碍物的考虑…

Qt Creator 界面

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、认识 Qt Creator 界面 1、总览 2、左边栏 3、代码编辑区 4、UI设计界面 5、构建区 一、认识 …

GitHub入门与实践

ISBN: 978-7-115-39409-5 作者&#xff1a;【日】大塚弘记 译者&#xff1a;支鹏浩、刘斌 页数&#xff1a;255页 阅读时间&#xff1a;2023-08-05 推荐指数&#xff1a;★★★★★ 好久之前读完的了&#xff0c;一直没有写笔记。 这本入门Git的书籍还是非常推荐的&#xff0c;…

【蓝桥杯】蓝桥杯算法复习(四)

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…

深入浅出 -- 系统架构之Keepalived搭建双机热备

Keepalived重启脚本双机热备搭建 ①首先创建一个对应的目录并下载keepalived安装包&#xff08;提取码:s6aq&#xff09;到Linux中并解压&#xff1a; [rootlocalhost]# mkdir /soft/keepalived && cd /soft/keepalived [rootlocalhost]# wget https://www.keepalived.…

ROS2 采集虚拟仿真环境图像并发布

简介&#xff1a;ROS2功能的学习我们还是在基于OpenAI的gym虚拟仿真环境中来完成&#xff0c;gym虚拟仿真环境安装请参考另一篇教程&#xff0c;这里不再重复说明&#xff0c;接下来我们开始创建一个ROS2的功能节点&#xff0c;并发布虚拟仿真环境小车摄像头的图像&#xff0c;…

Android Studio 打开Local Changes界面

在编写代码的过程中&#xff0c;经常要回顾本地仓库做了那些修改。打开Local Changes界面&#xff0c;能做到一目了然&#xff0c;不用再去使用git命令查看。 File->Settings->Version control->Commit 把Use non-modal commit interface 选项 取消勾选 即可

20240403在ubuntu20.04下解压缩gz压缩包

20240403在ubuntu20.04下解压缩gz压缩包.txt 2024/4/3 15:17 缘起&#xff1a;使用友善之臂FriendlyElec的NanoPi NEO Core开发板 https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO/zh#.E8.BF.90.E8.A1.8CFriendlyCore NanoPi NEO/zh http://wiki.friendlyelec.com/w…

Java基于微信小程序的校园外卖平台系统,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

蓝桥杯刷题 前缀和与差分-[NewOJ P1819]推箱子(C++)

题目描述 在一个高度为H的箱子前方&#xff0c;有一个长和高为N的障碍物。 障碍物的每一列存在一个连续的缺口&#xff0c;第i列的缺口从第l各单位到第h个单位&#xff08;从底部由0开始数&#xff09;。 现在请你清理出一条高度为H的通道&#xff0c;使得箱子可以直接推出去。…