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.pswp.cn/news/393095.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393095.shtml
英文地址,請注明出處:http://en.pswp.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…