Linux:linux系统中目录的遍历

Linux系统中目录的遍历

  • 1、Linux中目录的遍历
    • (1)函数opendir
    • (2)函数readdir
    • (3)函数closedir
    • (4)遍历指定目录的所有文件和子目录

1、Linux中目录的遍历

(1)函数opendir

打开需要被遍历的目录

DIR *opendir(const char *pathname);
  • pathname:待遍历的目录
  • return:成功则返回目录结构体指针,失败返回NULL

(2)函数readdir

依次读取目录结构体中的数据

dirent *readdir(DIR *dir);
  • dir:opendir返回的结构体指针
  • return:成功则返回当前目录下文件或文件夹的结构体,失败则返回NULL

(3)函数closedir

关闭opendir打开的dir目录

int closedir(DIR *dir);
  • dir:opendir返回的目录指针
  • return:成功返回0,失败返回-1

(4)遍历指定目录的所有文件和子目录

以下函数可以直接使用,目录下的所有子目录和文件都会被写入到txt文件中:

#include <sys/types.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <cstring>
#include <unistd.h>
#include <dirent.h>
int ReadCurDir(const char *pathname,int fd)
{DIR *dir = opendir(pathname);if(dir==NULL){printf("Failed to open dir!");return 0;}dirent *ptr_dir=NULL;while(NULL!=(ptr_dir = readdir(dir))){if(strcmp(ptr_dir->d_name,".")==0||strcmp(ptr_dir->d_name,"..")==0){continue;}char strLine[1024];sprintf(strLine,"%s/%s\n" , pathname,ptr_dir->d_name);printf("%s",strLine);write(fd,strLine,strlen(strLine));if(ptr_dir->d_type==DT_DIR){char newPath[1024];sprintf(newPath,"%s/%s",pathname,ptr_dir->d_name);ReadCurDir(newPath,fd);}}closedir(dir);return 1;
}

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

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

相关文章

国际期货收费行情源CTP推送式/期货配资软件开发对接行情源的技术性说明

在现代金融市场中&#xff0c;期货交易因其高风险和高回报特性而备受关注。为了满足期货交易者的需求&#xff0c;开发高效、稳定和安全的期货交易软件变得尤为重要。本文将对国际期货收费行情源CTP推送式及期货配资软件的开发对接行情源的技术细节进行详细说明。 一、CTP&…

Sequelize 提示报错ERR_HTTP_HEADERS_SENT

ERR_HTTP_HEADERS_SENT 是一个在 Node.js 环境中常见的错误,它通常发生在尝试向一个已经发送了 HTTP 头部的响应对象发送更多头部或数据时。在 Sequelize(一个基于 promise 的 Node.js ORM,用于 Postgres, MySQL, MariaDB, SQLite 和 Microsoft SQL Server 数据库)的上下文…

AJAX——express框架

本文分享到此结束&#xff0c;欢迎大家评论区相互讨论学习&#xff0c;接下来我们将用一个案例来接着学习AJAX的内容&#xff0c;下一篇给大家准备一个案例的准备工作分享。

Android studio中排除文件功能的小总结

刚开始发现android studio的sourceSets的main下面java的excludes无效&#xff0c;改了好多次都没成功&#xff0c;以为关键字不支持&#xff0c;或者是gradle版本问题&#xff0c;结果查了半天没成功。后来经过对比发现是相对路径问题。 在此总结一下&#xff0c;希望节省大家…

本地连接linux服务器上的sqlite数据库

要从本地机器连接到 Linux 服务器上的 SQLite 数据库文件&#xff0c;你需要采取以下步骤&#xff1a; 确保你有权限访问 Linux 服务器。 使用 SSH 隧道将本地端口转发到远程服务器。这允许你通过加密连接安全地访问远程数据库。 在本地机器上使用 SQLite 客户端或编程语言来…

过拟合和欠拟合小解

过拟合&#xff08;Overfitting&#xff09;和欠拟合&#xff08;Underfitting&#xff09;是机器学习领域中常见的两种问题&#xff0c;它们分别代表模型在训练数据和测试数据上表现不佳的两种极端情况。 过拟合&#xff08;Overfitting&#xff09; 过拟合是指模型在训练数…

微知-如何临时设置服务器风扇转速?(ipmitool raw 0x30 0x30 0x02 0xff 0x40)

服务器风扇可以通过PWM输出来控制转速。 设置方式 设置单次PWM ipmitool raw 0x30 0x30 0x02 0xff 0x40如果要持续设置需要类似while循环持续输出&#xff1a; while true; do ipmitool raw 0x30 0x30 0x02 0xff 0x64; done > /dev/null参数说明&#xff1a; 其他参数&a…

ClaimsettlementController

目录 1、 ClaimsettlementController 1.1、 保存三包表 1.2、 审核预约单 1.3、 反审核预约单 ClaimsettlementController using QXQPS.Models; using QXQPS.Vo; using System; using System.Collections; using System.Collections.Generic; using System.Linq…

云原生后端开发指南:拥抱未来的可扩展架构

云原生后端开发指南&#xff1a;拥抱未来的可扩展架构 随着企业数字化转型的深入&#xff0c;传统的IT架构正在向云原生架构迁移。云原生是一种充分利用云计算交付模式的方法&#xff0c;结合微服务、容器化和DevOps&#xff0c;帮助企业构建灵活、可扩展和高效的系统。在这篇…

【java】数组(超详细总结)

目录 一.一维数组的定义 1.创建数组 2.初始化数组 二.数组的使用 1.访问数组 2.遍历数组 3.修改数据内容 三.有关数组方法的使用 1.toString 2. copyOf 四.查找数组中的元素 1.顺序查找 2.二分查找binarySearch 五.数组排序 1.冒泡排序 2.排序方法sort 六.数组逆置…

科研绘图系列:R语言突出强调部分的饼图(pie plot)

文章目录 介绍加载R包数据数据预处理画饼图画图例合并图形系统信息介绍 饼图(Pie Chart),也称为圆图(Circle Graph),是一种圆形的统计图表,通过将圆分成若干扇形来展示数据的比例关系。每个扇形的角度大小代表了相应数据在总量中的占比。饼图的特点包括: 比例展示:直…

Redis知识应用索引指南

Redis&#xff0c;全称为Remote Dictionary Server&#xff0c;是一个开源的高性能键值对数据库。它以其卓越的性能、丰富的数据结构和灵活的持久化机制&#xff0c;在现代应用中扮演着至关重要的角色 1 什么是redis Redis是一个使用ANSI C语言编写的开源、跨平台的键值存储系…

10用户管理(Vue3+Spring Boot)

目录 1. 功能描述2. 接口地址3.后台Java代码4.前端框架搭建&#xff1a;views/user添加UserManageVue组件5. api/user.js中写请求接口代码6 获取用户信息7 删除用户8 修改状态9 效果演示 1. 功能描述 用户管理界面&#xff0c;对用户进行查询、状态变更、删除。2. 接口地址 #…

Linux系统——lvm逻辑卷

Linux系统——lvm逻辑卷 一、lvm逻辑卷1、lvm操作流程2、操作指令 二、逻辑卷操作1、创建逻辑卷1.1 /dev/cloud/openstack 5G xfs /cloud/openstack1.2 /dev/cloud/docker 10G ext4 /cloud/docker 2、逻辑卷扩容2.1 扩容流程2.2 需求一&#xff1a;扩容ext4文件系统的逻辑卷2.3…

Ubuntu-Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题

Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题 一、问题描述二、原因分析三、解决办法 一、问题描述 Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题 zhyzhy-HP:~/Sources/mpv-examples/libmpv/qt$ make g -c -pipe -g -Wall -Wextra -D_REENTRANT -fPIC -DQT_WIDGET…

TypeScript中 interface接口 type关键字 enum枚举类型

type interface总是傻傻分不清~~~ Type Aliases (type) type 关键字用于为类型定义一个别名。这可以是基本类型、联合类型、元组、数组、函数等。type 定义的类型在编译后的 JavaScript 代码中会被移除&#xff0c;不会留下任何运行时的代码。 //联合类型 type StringOrNumbe…

SQL JOIN的学习

SQL JOIN (w3school.com.cn) 之前跟着老师学数据库的时候学过&#xff0c;最近又比较频繁的在使用。 再复习一下。 Id_P是主键 Id_O是主键 1. SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P Orders.Id_P 2. SEL…

Idea 2023.2.7构建SpringCloud多模块项目

Idea 2023.2.7构建SpringCloud多模块项目 本文介绍如何使用idea 2023.2.7构建基于SpringCloud alibaba微服务项目&#xff0c;基于Nacos注册中心。 环境准备&#xff1a; JDK版本&#xff1a;jdk17 SpringBoot:3.3.4 SpringCloud:2023.0.3 Nacos服务端:2.4.3 1、创建父工程&a…

指针的理解

int arr[3] {10, 20, 30}; int *parr arr; 1. *parr 、 *arr 分别代表什么 指针parr指向数组arr[3]的首元素地址&#xff0c;arr数组名单独使用表示数组首元素地址&#xff0c;即arr>&arr[0]&#xff1b; *parr和*arr是对首元素地址的解引用,代表访问arr[0]的空间…

MongoDB 介绍

一、MongoDB 介绍 MongoDB 是一个开源的、面向文档的数据库管理系统。它采用了灵活的数据模型&#xff0c;以类似 JSON 的文档形式存储数据&#xff0c;具有高可扩展性、高性能和丰富的功能。 主要特点包括&#xff1a; 灵活的数据模型&#xff1a;文档型数据库允许存储不同…