linux 怎么禁止遍历目录,linux下遍历目录功能实现

/*

编译:

dir:dir.c

gcc -o $@ $<

*/

#include   

#include   

#include   

#include   

#include    

int do_search_dir(char *path);

int do_check_dir(char *fullpath, char* truefullpath);

void usage(char *apps);

int count = 0;

int

main(int argc,char **argv)

{

char fullpath[1024]={0};

if(argc != 2)

{

usage(argv[0]);

return -1;

}

if( -1 ==do_check_dir(argv[1], fullpath) )

return -1;

do_search_dir(fullpath);

printf("\nThe total number of files is %d in the directory [%s].\n\n", count , fullpath);

return 0;

}

//return -1 search fail

//return 0 search ok

int

do_search_dir(char *path)

{

DIR *dir;

struct dirent *s_dir;

struct stat file_stat;

char currfile[1024]={0};

int len = strlen(path);

if(path[len-1] != '/')

{

path[len] = '/';

path[len+1] = 0;

}

printf("%s\n",path);

if( (dir=opendir(path)) == NULL)

{

printf("opendir(path) error.\n");

return -1;

}

while((s_dir=readdir(dir))!=NULL)

{

if((strcmp(s_dir->d_name,".")==0)||(strcmp(s_dir->d_name,"..")==0))

continue;

sprintf(currfile,"%s%s",path,s_dir->d_name);

stat(currfile,&file_stat);

if(S_ISDIR(file_stat.st_mode))

do_search_dir(currfile);

else

printf("%-32s\tOK\n",currfile);

count++;

//

//添加针对此文件的操作

//

}

closedir(dir);

return 0;

}

void

usage(char * apps)

{

printf("Directory to search for files.\n\n");

printf("Usage: %s dirpath\n\n",apps);

}

//return -1 directory error

//args:

//input     -->fullpath

//output     -->truefullpath

int

do_check_dir(char *fullpath, char* truefullpath)

{

DIR *dir;

int pathlen, i ,k;

if( (dir=opendir(fullpath)) == NULL)

{

printf("opendir fullpath error.\nMaybe dir error.\n");

return -1;

}

closedir(dir);

pathlen = strlen(fullpath);

if( pathlen-1 != 0)        // 路径长度不为1 的目录

{

if( fullpath[pathlen-1] == '/' )    // 最后字节是'/'

{

for(i=pathlen-1; i>=0 ; i--)

{

if( fullpath[i-1] != '/' && fullpath[i] == '/')

break;

}

fullpath[i+1] = 0;

}

else        // 最后字节不是'/'

{

fullpath[pathlen] = '/';

fullpath[pathlen+1] = 0;

}

}

else     // 路径长度为1 的目录

{

if(fullpath[pathlen-1] != '/')

{

fullpath[pathlen] = '/';

fullpath[pathlen+1] = 0;

}

else

fullpath[pathlen] = 0;

}

strcpy(truefullpath,fullpath);

return 0;

}

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

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

相关文章

leetcode面试题 16.26. 计算器(栈)

给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外)&#xff0c;计算其结果。 表达式仅包含非负整数&#xff0c;&#xff0c; - &#xff0c;*&#xff0c;/ 四种运算符和空格 。 整数除法仅保留整数部分。 示例 1: 输入: “32*2” 输出: 7 代码 clas…

团队项目电梯会议视频

http://v.youku.com/v_show/id_XMjcyMjI3Mjk2NA.html?spma2hzp.8244740.userfeed.5!2~5~5~5!3~5~A转载于:https://www.cnblogs.com/jingxiaopu/p/6749776.html

arduino服务器_如何使用Arduino检查Web服务器的响应状态

arduino服务器by Harshita Arora通过Harshita Arora 如何使用Arduino检查Web服务器的响应状态 (How to use Arduino to check your web server’s response status) Last year, I created Crypto Price Tracker (an app which was acquired by Redwood City Ventures this yea…

leetcode486. 预测赢家(dp)

给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数&#xff0c;随后玩家 2 继续从剩余数组任意一端拿取分数&#xff0c;然后玩家 1 拿&#xff0c;…… 。每次一个玩家只能拿取一个分数&#xff0c;分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束…

linux怎么看文件状态,linux查看文件类型-file、状态-stat

linux查看文件类型-file、状态-stat首页 计算机相关 linux命令 linux查看文件类型-file、状态-statfile 命令可以用来查看文件类型-i mime type-s 读取字符或块设备文件最好指定[root192 tmp]# file freeclsfreecls: UTF-8 Unicode text[root192 tmp]# file -i freeclsfreecls:…

Linux课程笔记 Crond介绍

1. 定时任务比较及cron语法 Linux的任务调度可以分为两类&#xff1a; 系统自身执行的任务用户执行的工作Linux系统下另外两种定时任务软件&#xff1a; at&#xff1a;适合仅执行一次的调度任务&#xff0c;需要启动一个名为atd的服务 anacron&#xff1a;这个命令主要用于非…

Python 学习日记第二篇 -- 列表,元组

一、列表 列表是一个可以包含所以数据类型的对象的位置有序集合&#xff0c;它是可以改变的。 1、列表的序列操作&#xff08;Python3&#xff09; 123456789101112131415161718192021222324>>> one_list [1,2,3,4]>>> two_list ["jonny","…

【Gamma】PhyLab 测试报告

PhyLab Gamma测试报告 测试中发现的bug Gamma阶段新Bug Bug可能原因部分错误码设置与原先抛异常的逻辑冲突原先代码中使用了一些特殊的办法处理异常Beta未发现Bug Bug可能原因控制台新建实验编号不能以0开头后端处理编号会将其前导0去除&#xff0c;以数字形式存储&#xff0c;…

如何使用Node.js,Express和MongoDB设置GraphQL服务器

by Leonardo Maldonado莱昂纳多马尔多纳多(Leonardo Maldonado) 如何使用Node.js&#xff0c;Express和MongoDB设置GraphQL服务器 (How to set up a GraphQL Server using Node.js, Express & MongoDB) 从GraphQL和MongoDB开始的最直接的方法。 (The most straightforward…

leetcode954. 二倍数对数组(treemap)

给定一个长度为偶数的整数数组 A&#xff0c;只有对 A 进行重组后可以满足 “对于每个 0 < i < len(A) / 2&#xff0c;都有 A[2 * i 1] 2 * A[2 * i]” 时&#xff0c;返回 true&#xff1b;否则&#xff0c;返回 false。 示例 1&#xff1a; 输入&#xff1a;[3,1,…

linux文件内容打印成二进制,如何在二进制文件中只打印可打印字符(相当于Linux下的字符串)?...

在Python3中&#xff0c;以二进制模式打开文件会得到bytes的结果。迭代一个bytes对象可以得到0到255(包括0到255)的整数&#xff0c;而不是字符。从^{} documentation&#xff1a;While bytes literals and representations are based on ASCII text, bytes objects actually b…

1098 均分纸牌

1098 均分纸牌 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description有 N 堆纸牌&#xff0c;编号分别为 1&#xff0c;2&#xff0c;…, N。每堆上有若干张&#xff0c;但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸…

轻松学习分布式|系列3|分布式数据库。

我们继续来讲分布式&#xff0c;回到我们的创业游戏。 我们的业务规模上来了&#xff0c;客户也越来越忠诚了。很多客户都通过我们的订票服务&#xff0c;来方便自己的行程。 那对这些老客户&#xff0c;我们的宗旨是&#xff1a;要不断超越客户的期待。 所以&#xff0c;我们要…

量子运算 简单通俗例子_什么是量子计算机? 用一个简单的例子解释。

量子运算 简单通俗例子by YK Sugi由YK Sugi 什么是量子计算机&#xff1f; 用一个简单的例子解释。 (What is a quantum computer? Explained with a simple example.) Hi everyone!嗨&#xff0c;大家好&#xff01; The other day, I visited D-Wave Systems in Vancouver…

linux增加端口失败,端口没被占用,怎么会bind失败呢?

今天在一个服务器上部署一个webserver的时候&#xff0c;提示我bind端口失败&#xff0c;我习惯性的用netstat看了下&#xff0c;没有被占用啊&#xff01;把问题分享出来后&#xff0c;给力的同事们搜索到了ip_local_port_range这个东西这个东西对应的是/proc/sys/net/ipv4/ip…

leetcode面试题 17.15. 最长单词

给定一组单词words&#xff0c;编写一个程序&#xff0c;找出其中的最长单词&#xff0c;且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果&#xff0c;返回其中字典序最小的一项&#xff0c;若没有符合要求的单词则返回空字符串。 示例&#xff1a; 输入&am…

Restful API 设计

1. 简介 目前 "互联网软件"从用客户端/服务端模式&#xff0c;建立在分布式体系上&#xff0c;通过互联网通讯&#xff0c;具有高延时、高开发等特点。但是软件开发和网络是两个不同的领域&#xff0c;交集很少。要使得两个融合&#xff0c;就要考虑如何在互联网环境…

sql行数少于10_如何用少于100行的代码创建生成艺术

sql行数少于10by Eric Davidson埃里克戴维森(Eric Davidson) 如何用少于100行的代码创建生成艺术 (How to Create Generative Art In Less Than 100 Lines Of Code) Generative art, like any programming topic, can be intimidating if you’ve never tried it before. I’v…

安装输入发

直接在系统 ——系统管理 ——语言支持 选——中文从新启动 sudo apt-get install scim-pinyin安装JAVA环境支持 sudo apt-get install sun-java-jre()要是 apt -get 命令不能用 可能是你 的 源有问题 可以 更新一下 在系统 &#xff0d;系统管理 源设置 选这台湾的 就可以 …

(第2篇)一篇文章教你轻松安装hadoop

摘要: 这篇文章将会手把手教你安装hadoop&#xff0c;只要你细心按照文章中的步骤操作&#xff0c;hadoop肯定能正确安装&#xff0c;绝对不会让你崩溃 博主福利 给大家赠送一套hadoop视频课程 授课老师是百度 hadoop 核心架构师 内容包括hadoop入门、hadoop生态架构以及大型ha…