22. linux系统基础

news2025/1/11 0:28:28

递归遍历指定文件下所有的文件,而且你还可以统计一下普通文件的总个数,既然能统计普通文件,能统计其他文件吗?比如目录文件, 这个是main函数里面我们调用了 ,这个checkdird这个函数,需要传递一个路径,

 文件打开的目录,把路径 传进去,传进来以后,我这个路径,调用opendir打开,打开之后返回一个指向目录的一个指针,DIR *pDir  

 

 接下来在一个循环里面,循环读取目录项,如果这个不过滤会怎么样?每一个目录下都有它自己,会进入死循环,这个必须过滤掉,接下来进行判断,看一下这个文件是什么类型,如果说是这种目录DT_DIR 应该是递归, 有的人是不是没把这个加上49?如果没加上,他肯定是最多打开一层或者失败,
打开失败那个perror 就是说 没有这个文件或目录,然后拼接好以后,继续让他调自己,这个自己调用自己,在这里我们是直接或间接调用自己呀?在这里是直接调自己, 50这个是函数里面调自己,这个是直接调自己,那么它返回一个n值,n+= 是什么意思?是累加,一直累加,递归是一层一层的压栈,最后一层一层的出栈,递归有些场合不用递归不行,递归又不太提倡用,为什么呢?因为说如果压栈太深,有可能会照成栈溢出,但一般情况下,系统上你的目录 层能有多深呢? 你大概10层 你还能20层100层吗?

 如果是普通文件 n++就可以了,n++ 就是在统计普通文件的个数呀?

 函数,由这个返回,返回的是普通文件的总个数,记得要关闭这个目录,否则就会照成,我打开很多目录,是不是最后只能关闭一个呀?你这个函数checkdir他肯定打开的是带路径的,这个是不是可以用相对路径呢?你要知道这个相对路径是相对谁的呀?是当前目录,因为你这个目录是不是要切换呀?但是这个切换是不是只能往下切换呀?不能往上切换,演示一下,统计一下当前目录,看看有多少文件,25个吧?

 

 如果在统计目录的话,是不是在目录项在做个m++ 如果让你统计目录和文件一块来统计,这个返回值怎么说?这个参数你可以返回结构体可以吗?

因为这个return是不是 如果返回一个普通数据类型的话,是不是只能返回一个值呀?如果你想返回多个值,可以返回一个结构体,返回一个结构体指针,或者返回一个结构体,值传递是不是也可以呀?
但是你不能返回局部变量的引用,或者是指针吧,

两个文件符指向的相同的文件,无论你对他如何操作,读或写,都会引起文件指针的变化,那么这一个文件只有一个读写位置指针,你使用哪个文件描述符,都会引起它的变化,

dup2比dup要复杂一些,

 我们打开两个文件,newfd)指向argv[1] 也就是指向oldfd指向的文件,
这个里面有一个隐含的操作,如果说,我们在进行文件描述符复制的时候,如果这个newfd已经打开一个文件了,那么你做了28这么一个操作,很显然,newfd会把这个文件给关掉,然后再做文件描述符的复制,如果说这个newfd没有打开文件,没有关系,直接复制,当你进行了文件描述符的复制以后呢,那么内核当中会给你做隐性计数,这点有点类似硬连接,如果我仅仅是把这个newfd close掉,那么你这个文件有没有会真正的关闭掉?没有,那么你close一个文件描述符,只是说使这个文件描述符隐性计数减一,如果是0的时候这个文件是真正的关闭了,要仔细联想一下硬连接,跟那个原理是一模一样的,

 这个文件描述符STDOUT_FILENON,是不是它已经把这个把标准输出给打开了吧?因为我们的进程执行起来以后默认有3个打开的文件描述,分别是 标准输入 标准输出,和标准错误输出,这三个文件是打开的,跟我们刚才讲那个是不是类似?那个是我们手动打开,这个是进程刚刚已启动就打开了STDOUT_FILENON,,

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

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

相关文章

垃圾收集器以及三色标记

分代收集理论当前虚拟机的垃圾收集采用分代收集算法,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法新生代:每次收集都会有大量对象(近99%)死去,所以可…

教资教育知识与能力中学教学

目录 3.1 教学概述 3.2 教学过程 3.3 教学原则*【简答/辨析重点】 3.4 教学方法 3.5 教学组织形式 3.6 教学工作基本环节 3.7 教学评价 3.1 教学概述 1、教学的意义【14/18辨析】 教学是传授系统知识、促进学生发展的最有效形式; 教学是学校进行全面发展教…

MSTP多域实验配置

目录 实验配置 配置MSTP MSTP参数修改 查看每个设备的生成树 配置MSTP安全 实验配置 放行相关Vlan MST1域内的交换机互联接口放行Vlan 30、40 MST2域内的交换机互联接口放行Vlan 10、20、40 MST1域和MST2域之间交换机互联端口放行Vlan 40 配置MSTP 全网交换机都开启MSTP&a…

【SpringMVC】springMVC介绍

参考资料 视频资料 03_尚硅谷_SpringMVC_SpringMVC简介_哔哩哔哩_bilibili 笔记资料 第一节 SpringMVC概述 (wolai.com)链接:https://pan.baidu.com/s/1A7BX2TNfbGTpYene4x3Mew 提取码:a8d5 一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思…

React(五):受控组件、高阶组件、Portals、Fragment、CSS的编写方式

React(五)一、受控组件1.什么是受控组件(v-model)2.收集表单数据:input和单选框3.收集表单数据:下拉框二、非受控组件三、高阶组件1.什么是高阶组件2.高阶组件的应用13.高阶组件的应用2-注入Context4.高阶组件的应用3-登录鉴权5.高…

十一、GoF之代理模式

1 对代理模式的理解 【在程序中,对象A和对象B无法直接交互时。】 【在程序中,功能需要增强时。】 【在程序中,目标需要被保护时】 业务场景:系统中有A、B、C三个模块,使用这些模块的前提是需要用户登录,也…

HTML的表单标签

🌟所属专栏:HTML只因变凤凰之路🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该系列将持续更新HTML的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~👉文章简…

将对象或数组存在 dom元素的属性上,最后取不到完整数据,只取到 [{

目录 一、问题 二、问题及解决方法 三、总结 一、问题 1.我需要在dom元素里面添加了一个属性test存一个对象数组temp,以便我下一次找到这个dom元素时可以直接拿到属性里面的数据来渲染页面。 2.dom 属性上存 对象和数组,必须先JSON.stringify(arr),转…

开发手册——一、编程规约_8.注释规约

这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用 /**内容*/ 格式,不得使用 // xxx 方式。 说…

C++ 线程库

文章目录thread 创建mutexmutexrecursive_mutextimed_mutexlock_guard原子操作atomic条件变量condition_variable其他线程安全问题shared_ptr单例模式C 线程库是 C11 标准中引入的一个特性,它使得 C 在语言级别上支持多线程编程,不需要依赖第三方库或操作…

unity开发知识点小结01

unity对象生命周期函数 Awake():最早调用,所以可以实现单例模式 OnEnable():组件激活后调用,在Awake后调用一次 Stat():在Update()之前,OnEnable…

【C++知识点】位运算

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…

海思嵌入式开发-005-OpenHarmony源码编译问题

海思嵌入式开发-005-OpenHarmony源码编译问题一、问题描述二、解决方案2.1解决原理2.2获取OpenHarmony 3.1.1 Release源码2.3最后解决问题,编译成功。一、问题描述 按照链接拉取master源码,出现如下问题,打开build.log文件 提示相应位置的文…

Servlet详细教程

文章目录Servletservlet 简介Servlet 入门案例页面编写页面提交 get 请求Servlet 和 Tomcat 关系servlet-apiget 和 post 请求Servlet 生命周期案例HttpServletRequest 接口简介文件上传FileServlet 类Servlet servlet 简介 servlet 全称为 server applet 是服务器的小程序&am…

龙腾iSharedisk无盘系统 v1.8 Build 20230207 Crack

龙腾 iShareDisk无盘系统是一款高品质的 无盘启动和VHD离线启动系统。其功能满足目前校园、网咖、企业、酒店、证券、服务业、KTV、包厢VOD的需求,其可以 自行选择部署有盘或者无盘,实现Windows全系列产品无盘/VHD 启动的一体化解决方案! …

【Storm】【七】Storm三种打包方式对比分析

Storm三种打包方式对比分析 一、简介二、mvn package三、maven-assembly-plugin插件四、maven-shade-plugin插件五、结论六、打包注意事项一、简介 在将 Storm Topology 提交到服务器集群运行时,需要先将项目进行打包。本文主要对比分析各种打包方式,并…

MyBatis - 14 - 分页插件的配置及使用

文章目录1、分页插件配置(1)在pom.xml中添加依赖(2)在MyBatis的核心配置文件中配置插件2、分页插件的使用回顾Mysql分页功能MyBatis分页插件的使用测试显示第1页,每页显示4条数据,打印page对象测试获取分页…

A. Linova and Kingdom(dfs + 贪心)

A. Linova and Kingdom(dfs 贪心)一、问题二、思路三、代码一、问题 二、思路 这道题的大意就是,给我们一棵树,我们需要在树上选择kkk个点,然后让kkk个信使从我们选取的kkk个点向第一个点出发。 我们把我们选取的k个…

Verdaccio 搭建私有 npm 仓库

背景 公司内部封装业务相关的组件库,工具库,希望统一管理和维护,在多个项目中都能使用,同时希望不公开,只在局域网中使用。所以,需要搭建私有 npm 仓库 Verdaccio verdaccio 是一个能够创建私有 registr…

vue:vue2与vue3的区别

一、背景 vue2是指的2.X vue3是指的3.0以及更新的版本(3.2版本在script标签里可以写setup,极大的简化了开发) 本文对比两者区别。 二、官网 生命周期选项 | Vue.js API 参考 | Vue.js Vue.js - 渐进式 JavaScript 框架 | Vue.js Vue.…