2024-03-05

作业要求:

  1.  使用write 和 read 实现 文件夹拷贝功能,不考虑递归拷贝
  2. 使用循环+fork的形式。创建一条进程链,链条上总共有100个进程 要求:程序不崩溃

作业1:使用write 和 read 实现 文件夹拷贝功能,不考虑递归拷贝

运行代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<dirent.h>
int main(int argc, const char *argv[])
{//打开拷贝文件夹DIR * dir = opendir(argv[1]);if(dir == NULL){perror("opendir");return -1;}//创建目标文件夹char sys[10]="mkdir ";strcat(sys,argv[2]);system(sys);	struct dirent *dnt;//文件夹结构体声明//文件夹文件遍历while((dnt = readdir(dir))!=NULL){//排除 . 和 ..if(strcmp(".",dnt->d_name)==0||strcmp("..",dnt->d_name)==0){continue;}//读文件char name_r[100] = {0}; strcpy(name_r,argv[1]);strcat(name_r,"/");strcat(name_r,dnt->d_name);int rfp = open(name_r,O_RDONLY);if(rfp==-1){perror("open1");return -1;}//写文件char name_w[100] = {0};strcpy(name_w,argv[2]);strcat(name_w,"/");strcat(name_w,dnt->d_name);struct stat *mode;int stat1 = stat(name_r,mode);int wfp = open(name_w,O_WRONLY | O_TRUNC | O_CREAT,0666);char temp[1]={0};while(1){int res = read(rfp,temp,sizeof(temp));if(res <= 0){break;}write(wfp,temp,sizeof(temp));}close(rfp);close(wfp);}closedir(dir);return 0;
}
运行截图:

作业2:使用循环+fork的形式。创建一条进程链,链条上总共有100个进程 要求:程序不崩溃

运行代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main(int argc, const char *argv[])
{int n=100;for(int i=0;i<n;i++){int res = fork();if(res == -1){return 1;}else if(res == 0){printf("%d\n",getpid());break;}else{sleep(1);}}return 0;
}
运行截图:

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

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

相关文章

Arthas 日常记录

一 . 前言 Arthas 是一个 Java 诊断程序 , Arthas 官方 已经很详细的描述了命令的使用 , 如果想整体学习可以查看. 而这一篇文档记录了从最开始接触到 Arthas 到逐步深入过程中的一些记录和感悟 , 整理成文档以便处理. 使用场景 如果是一个可以复现的线上问题&#xff0c;而代…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之RowSplit容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、RowSplit容器组件 将子组件横向布局&#xff0c;并在每个子组件之间插入一…

【力扣】208.实现Trie

实不相瞒&#xff0c;我怎么感觉洛谷里面的题目好难呢&#xff1f;虽然说万变不离其宗&#xff0c;但是我就觉得刷洛谷的题让我心情烦躁&#xff0c;刷不下去。于是今天我就刷力扣去了&#xff0c;明天继续挣扎吧&#xff01; 这道题目其实挺简单的&#xff0c;但是刚开始我没看…

如何使用宝塔面板部署MySQL数据库,并结合内网穿透实现固定公网地址远程连接

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.1 开放局域网端口3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几…

力扣543. 二叉树的直径

Problem: 543. 二叉树的直径 文章目录 题目描述思路复杂度Code 题目描述 思路 1.最大直径 左子树的最大深度 右子树的最大深度&#xff1b; 2.定义一个变量maxDiameter记录最大直径&#xff0c;并编写一个递归函数maxDepth&#xff0c;利用树的后序遍历每次递归求取leftMax&a…

我的第②个出海工具站 - 2024年50个出海工具站计划

为了大家更好的使用各种出海工具。我上线了一版 出海工具导航 站点&#xff0c;经常使用的可以收藏下&#xff0c;我文内使用的网站都集成在了这里&#xff0c;非常使用。 随着AIGC的到来&#xff0c;2024年到了海外工具回暖的一年。今年计划上线50款出海工具站计划&#xff0c…

Stable Diffusion ———LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo等版本之间关系现原理详解

前言 2021年5月&#xff0c;OpenAI发表了《扩散模型超越GANs》的文章&#xff0c;标志着扩散模型&#xff08;Diffusion Models&#xff0c;DM&#xff09;在图像生成领域开始超越传统的GAN模型&#xff0c;进一步推动了DM的应用。 然而&#xff0c;早期的DM直接作用于像素空…

7.1.3 Selenium的用法2

目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe&#xff0c;也就是子 Frame&#xff0c;相当于页面的子页面&#xff0c;它的结构和外部网页的结构完全…

个人如何解除电信黑名单:步骤与注意事项

最近很多小编的粉丝给我留言&#xff1a;不知道为什么自己咋就成了电信黑名单了呢&#xff1f;该怎么解除呢&#xff1f;相信只要是遇到这个问题的小伙伴都会很焦虑&#xff0c;但是不要急&#xff0c;不要慌&#xff0c;今天小编就给大家讲讲明白&#xff0c;让大家更好的去解…

vue设计原理-带你重走vue诞生路程

我们首先看下面这个小demo demo源码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conten…

「项目实践」如何实现导购推荐“千人千面”

前言 在电商背景下&#xff0c;为用户提供精准的导购推荐不仅能极大提升购物体验&#xff0c;也成为推动业务增长的关键驱动力。随着人工智能和数据科学的快速发展&#xff0c;实现“千人千面”的个性化推荐已不再是无法触及的梦想。如何在众多商品中准确捕捉用户的偏好&#…

简洁版用户登录系统

前端页面&#xff1a; 用户登录首页&#xff1a; <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximu…