linux文件与目录操作相关API及递归遍历目录

本文介绍了Linux系统中用于文件和目录操作的主要API,包括chmod、chown、mkdir、rmdir、chdir、getcwd、opendir、readdir和closedir。并提供了一个深度遍历目录的示例函数printdir,该函数递归地列出指定目录及其所有子目录中的文件和子目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.文件与目录操作主要API

@ int chmod(const char *path, mode_t mode) 改变目录或文件访问权限;

@ int chown(const char *path, uid_t owner, gid_t group)改变文件属主

@ int mkdir(const char *path, mode_t mode)创建目录

@ int rmdir(const char *path)删除目录

@ int chdir(const char *path)切换目录

@ char * getcwd(char *buf, size_t size)获取当前目录

@ DIR *opendir(const char *name)打开目录建立目录流,使用返回的目录流完成目录操作,类似于文件指针

@ struct dirent *readdir(DIR *dirp)返回一个指向目录项的资料结构

@ int closedir(DIR *dirp)关闭一个目录流并释放相关资源

2.类似深度遍历的目录扫描方法

void printdir(char *dir, int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if((dp = opendir(dir)) == NULL)
{
fprintf(stderr,"invalid dir: %s\n",dir);
return;
}
chdir(dir);
while((entry = readdir(dp)) != NULL)
{
lstat(entry->d_name, &statbuf);
if(S_ISDIR(statbuf.st_mode))
{
if(strcmp(".",entry->d_name) == 0 ||
  strcmp("..",entry->d_name) == 0)
continue;
printf("%*s%s/\n",depth,"",entry->d_name);
printdir(entry->d_name,depth+2);                                   //递归调用遍历当前子目录
}
else
printf("%*s%s\n",depth,"",entry->d_name);
}
chdir(".."); //一个子目录遍历结束,返回上一级目录
closedir(dp);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值