Linux C文件系统作业——6

构建I.MX6U Yocto根文件系统及遵循嵌入式C语言编程规范 本文还有配套的精品资源,点击获取 简介:本教程深入介绍了如何使用Yocto项目为I.MX6U处理器定制Linux根文件系统,并详细阐述了嵌入式Linux开发中的C语言编程规范。教程涵盖了Yocto项目的核心工具和方法论、I.MX6U处理器的特点、根文件系统的构建过程,以及嵌入式C语言编程规范的各个方面,旨在帮助工程师提高嵌入式系统的开发效率和代码质量。 1. Yo... 阅读详情

编写程序完成以下功能:

1.递归遍历/home目录,打印出所有文件和子目录名称及节点号。

2.判断文件类型,如果是子目录,继续进行递归遍历,直到遍历完所有子目录为止。

代码如下:

#include<stdio.h>
#include<dirent.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/stat.h>
#include<bits/stdio.h>
#include<dirent.h>

char ss[256];

void Judge(char *Buffer)
{
	DIR *dir; 
	struct dirent *dirp; 
	struct stat statbuf;
	char Buf[256];
	strcpy(Buf,Buffer);
	printf("\n\n\nBuffer:%s\n",Buf);
	if(lstat(Buf,&statbuf)<0)
    {         
		perror("lsata:"); 
   	}
	
 	if(S_ISDIR(statbuf.st_mode))
	{         
		dir = opendir(Buf);
        if(dir) 
		{             
			while((dirp = readdir(dir)) != NULL)
			{                 
				if(strcmp(dirp->d_name,".")==0 || strcmp(dirp->d_name,"..")==0)
                continue; 
                printf("\ninode = %ld\n", dirp->d_ino); 
                printf("file name:%s\n",dirp->d_name);
                printf("cwd:	%s\n",getcwd(ss,255));
				if(dirp->d_type == 4)
				{
					strcat(Buf,"/");
					strcat(Buf,dirp->d_name);        
            		Judge(Buf);
				}
            }
            
		}
		else
        {
			perror("opendir error:"); 	  
		}
		closedir(dir); 
	}
	else
	{
		printf("This is not directory\n");
	}
}



int main()
{
	DIR *dir; 
	struct dirent *dirp; 
	struct stat statbuf;
	char Buffer[256];
	printf(".........................................");
	getcwd(Buffer, 255);
    	printf("\nthe current dir is : %s\n",Buffer);

	strcpy(Buffer,"/home/yang/zuoye_2");
	Judge(Buffer);
	printf("...........................................\n");
	return 0;
}

涉及的知识点:

1递归

2文件信息相关函数 :lstat()getcwd()函数

3目录文件库<dirent.h>的相关操作:DIR 结构体 dirent结构体

4string库里部分函数

 

参考过的博客:https://www.cnblogs.com/xudong-bupt/p/3504442.html

linux,c语言文件系统 分别使用read(), write() ;fread(), fwrite(), 编写两个文件复制程序,用time比较两者运行时间的不同。 立即下载

相关推荐

[Linux C]递归遍历指定目录

演示了在Linux下利用C语言递归遍历指定目录下的子目录(不含隐藏目录)和文件。只要掌握了这种方法,你也可以修改成你需要的功能。

Linux高级编程——实验六 编写程序完成以下功能: 1.递归遍历/home目录,打印出所有文件和子目录名称及节点号。 2.判断文件类型,如果是子目录,继续进行递归遍历,直到遍历完所有子目录为止。

实验六 编写程序完成以下功能: 1.递归遍历/home目录,打印出所有文件和子目录名称及节点号。 2.判断文件类型,如果是子目录,继续进行递归遍历,直到遍历完所有子目录为止。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/types.h> #include&...

sky_share的博客 1812

文件系统(c语言实现,在linux下编译)

模拟了多级文件系统的基本功能:创见用户、建立 修改 读写 删除 拷贝 粘贴 重命名文件……对初学者理解文件系统很有帮助!

linux ls命令的简要实现

本程序来自《unix环境高级编程》第三版 图1-3 程序名:myls.c #include "apue.h" #include <dirent.h> int main(int argc,char *argv[]) { DIR *dp; struct dirent *dirp; if(argc!=2) err_quit("usage:ls directory_name"); if((dp=opendir(argv[1]))==NULL) err_sys("can't o

m0_38062470的博客 425

统信UOS开发环境支持Java

集成了JDK和多种IDE,为开发者提供了从代码编写、编译、调试到部署的一站式开发解决方案。

RZer的博客 2253

【中兴交换机MC-LAG配置】

​ 中兴mc-lag配置 主设备配置如下: Keepalive链路 interface smartgroup1023 //用作MC-LAG的Keepalive链路接口 switch attribute disable yes description For_Keepalived exit interface xgei-0/1/1/47 switch attribute disable yes description For_Keepalived exit interface

qq_31440733的博客 1万+

Linux 文件系统:C语言接口、系统接口

Linux 文件系统:C语言接口、系统接口

Han同学 1884

YOLOv10改进 | 主干篇 | 引入FasterNet:Run, Don‘t Walk,追求更快的神经网络

本文引入了 FasterNet 作为 YOLOv10 的主干网络。通过 PConv 算子,我们有效降低了模型的计算冗余。对于追求极致推理速度的场景(如树莓派、Jetson Nano),该改进方案极具价值。建议在训练时配合混合精度训练 (AMP)进一步加速。

weixin_51988935的博客 604

struct dirent 和 DIR结构体 详解

struct dirent和DIR结构体 1、包含ouwenjan

sin0803的专栏 5万+

Windows 11 安装 JDK 11:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统中安装 JDK 11 的完整流程,包括从 Oracle 官网下载压缩包、解压到自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章还包含一个专为 JDK 11 新特性设计的测试程序,涵盖 Lambda 表达式 var 语法、HTTP 客户端 API、字符串增强方法等,帮助读者确认安装版本正确无误,适合初学者和需要多版本 JDK 共存的开发者参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2776

本文将详细介绍如何在 Qt (C++) 应用程序中集成 osgEarth,加载三维数字地球,并在指定经纬度添加三维模型(如飞机、建筑等)。

OSG 与 Qt 的交互通常需要处理 OpenGL 上下文。osgEarth 3.x 提供了对 Qt 的较好支持,或者可以使用。在普通 OSG 程序中,你需要手动处理坐标系转换将经纬度转为笛卡尔坐标 (XYZ)。这是实现的关键,将 OSG 的渲染循环集成到 Qt 的事件循环中。第三方库,但在本教程中,我们将展示一种通过继承。,将 Qt 的输入事件转换为 OSG 理解的。事件,这是实现交互(旋转地球、缩放)的基础。来嵌入 OSG 视图的标准方法。在这里我们初始化地球并添加模型。节点简化了这一过程。

qq_45859163的博客 1044

linuxc 高级编程之文件操作2

1.创建新文件,该文件具有用户读写权限。2.采用dup/dup2/fcntl复制一个新的文件描述符,通过新文件描述符向文件写入“class_name”字符串;3.通过原有的文件描述符读取文件中的内容,并且打印显示;源代码:#include&lt;string.h&gt;#include&lt;fcntl.h&gt;#include&lt;stdio.h&gt;#include&lt;stdl...

qq_37192076的博客 1408

YOLOv26与其他目标检测算法的对比分析

本文对YOLOv26与其他主流目标检测算法进行了全面对比分析。YOLOv26在COCO数据集上达到96.0% mAP@0.5和79.0% mAP@0.5:0.95,显著优于其他YOLO系列算法,同时保持85FPS的推理速度和35MB的轻量级模型。相比两阶段算法(如Faster R-CNN),YOLOv26在速度、模型大小和内存占用方面优势明显;相比Anchor-free算法(如CenterNet),YOLOv26在速度和模型压缩方面更优。其核心创新包括动态锚框分配、自注意力机制和轻量级设计,使其成为适用于复

一键难忘的博客 991

Linux操作系统支持常用的文件系统有哪些?

Linux操作系统支持常用的文件系统有哪些?下面简单说明了Linux操作系统所支持的几个大家常用的文件系统的主要的大家关心的特点,比如,单个文件大小的限制和该文件系统所支持的最大容量。 大家常常可能因为工作或学习的需要,要使用个操作系统(比如Windows和Linux)。大家对Windwos支持的文件系统可能比较熟悉,而对Linux操作系统所支持的文件系统也许比较陌生。常需要把Win

moqingxinai2008的专栏 1万+

RK3568平台开发系列讲解(中断及异常篇)中断下半部:中断线程化

以前用 work 来线程化地处理中断,一个 worker 线程只能由一个 CPU 执行, 多个中断的 work 都由同一个 worker 线程来处理,在单 CPU 系统中也只能忍着 了。少数中断不能线程化,典型的例子是时钟中断,有些流氓进程不主动让出处理器,内核只能依靠周期性的时钟中断夺回处理器的控制权,时钟中断是调度器的脉搏。中断处理线程是优先级为50、调度策略是SCHED_FIFO的实时内核线程,名称是“irq/”后面跟着Linux中断号,线程处理函数是。,说明是线程化的中断,那么唤醒中断处理线程。

内核笔记 435

解决Android API 30+视频播放抖动问题

摘要:本文探讨了Android开发中使用ExoPlayer在API 30+设备上出现的视频抖动问题。作者发现API 30以下版本运行正常,但API 30及以上版本会出现画面不稳定现象。解决方案是改用TextureView替代SurfaceView,通过修改PlayerView配置并设置setUseTextureView(true)来增强播放稳定性。这一简单改动有效解决了API兼容性问题,为开发者提供了实用的解决方案。

m0_62153576的博客 114

Linux文件系统及C语言应用

文件系统是操作系统中用于数据存储、组织和访问的基础架构。在Linux操作系统中,文件系统不仅管理着磁盘空间,还负责维护文件的元数据和访问权限。它以层次化的树状结构组织数据,以根目录(/)为起点,通过目录和子目录的方式管理文件。每个文件系统都有自己的根目录,可以包含文件和子目录。数从文件中读取数据,并确保读取到的字符串以null结尾。6.打印读取到的内容:使用printf函数打印读取到的文件内容。7.关闭文件:再次使用close函数关闭文件描述符。

SEU123WW的博客 1350

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Linux文件系统6(基于6.1内核)(完结篇)

Linux文件系统6(基于6.1内核)---深入理解文件系统总结

ListQ的博客 1220

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Linux】文件系统详解

【Linux】文件系统详解

南瓜籽_的博客 6594

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Linux文件系统(一)文件系统基本概念

1.文件系统概述 2.文件系统的类型 3.Ubuntu文件系统的结构

风高秋月白,雨霁晚霞红 6035

Linux进程管理作业控制及虚拟文件系统

进程管理———作业控制以及虚拟文件系统

s1429583654的博客 685

C语言模拟实现Linux文件系统

C语言模拟实现Linux文件系统 【下载地址】C语言模拟实现Linux文件系统 本项目使用C语言模拟实现了一个简单的Linux文件系统。该文件系统在内存中开辟一块空间来模拟文件系统的运行,不涉及硬盘的读写操作。项目的主要特点如下:1. **内存模拟**:文件系统在内存中运行,不依赖于硬盘存储。2. **单用户、单任务**...

gitblog_09737的博客 597

Linux下的ROMFS文件系统源码 inode.c 解析(1)

inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block。Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能...

Shang1031 1378

Linux设备驱动开发详解【五】_Linux文件系统和设备文件系统

本文简介 由于字符设备和块设备都很好地体现了“一切都是文件”的设计思想,掌握Linux文件系统、设备文件系统的知识非常重要。 首先,设备驱动最终通过操作系统的文件系统调用或C库函数(本质也基于系统调用)被访问。 其次,驱动工程师在设备驱动中不可避免地会与设备文件系统打交道,如Linux2.4内核的devfs文件系统和Linux2.6内核的基于s...

santirenpc的博客 1053

linux之文件系统

Linux 文件系统通过 VFS 实现了“统一接口、多类型支持”,其底层依赖超级块、inode、数据块、目录项构建存储结构,通过挂载机制关联设备与目录树。理解这些核心概念和操作,不仅能帮助日常管理(如挂载设备、检查修复),还能根据场景选择最优文件系统,提升系统性能和数据可靠性。

u010632343的博客 1547

Linux 文件系统(C语言)

文件 可被读写的对象 具备一定权限属性,包含访问权限,类型等 文件类型 1.普通文件(文本文件,shell脚本,二进制的可执行程序等) 2.目录文件 3.设备文件(字符设备文件/块设备文件) 4.FIFO文件(如管道文件) 5.Socket文件 6.连接文件(硬链接文件,软连接文件) 硬链接文件 硬链接文件相当于源文件的一个别名,和源文件指向相同的inode节点...

朱夏彤的博客 6627
上一篇: LInux C进程控制作业——1
下一篇: LInux C进程控制作业——2
include666
博客等级 码龄9年 12粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值