導航:首頁 > 操作系統 > linuxc獲取目錄

linuxc獲取目錄

發布時間:2022-07-12 16:56:52

linux操作系統利用find 命令如何查找某個目錄的位置

1、linux命令如果記不得,可以使用man命令來查看某個命令的使用。但對應初學者往往看不懂或者不知道什麼場景下使用

(1)linuxc獲取目錄擴展閱讀

Linux簡介:

Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。

Linux操作系統誕生於1991 年10 月5 日(這是第一次正式向外公布時間)。Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬體設備中,比如手機、平板電腦、路由器、視頻游戲控制台、台式計算機、大型機和超級計算機。

嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU工程各種工具和資料庫的操作系統。

㈡ linux中,什麼函數可以讀取目錄

LINUX下歷遍目錄的方法一般是這樣的
打開目錄-》讀取-》關閉目錄
相關函數是
opendir -> readdir -> closedir

#include <dirent.h>
DIR *opendir(const char *dirname);

#include <dirent.h>
struct dirent *readdir(DIR *dirp);

#include <dirent.h>
int closedir(DIR *dirp);

好了,三個函數都出來了呵呵,原型就是上面,給自己解釋一下免得以後我自己忘了呵呵!我以經忘過好幾回了,所以這次放上博客來
opendir用於打開目錄,是類似於流的那種方式,返回一個指向DIR結構體的指針他的參數*dirname是一個字元數組或者字元串常量,
readdir函數用於讀取目錄,他只有一個參數,這個參數主opendir返回的結構體指針,或者叫句柄更容易理解些吧。這個函數也返回一個結構體指針 dirent *
dirent的結構如下定義
struct dirent
{
long d_ino; /* inode number */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* file name (null-terminated) */
}
結構體中d_ino存放的是該文件的結點數目,什麼是結點數目呢我也說不清楚了呵呵,查一下其它資料了
d_off 是文件在目錄中的編移,具體是什麼意思我也不是很明白,我很少用到它,其本上就是用到d_name short d_reclen是這個文件的長度,需要注意的是這里的長度並不是指文件大小,因為大小和長度是2回事了,你可以用lseek將文件長度移得很長,但大小其實還是那麼大.最後一個元素就是我們要的了,文件名稱!
寫了一個實例:

/**
* 功能: Linux下C語言目錄歷遍 (讀取目錄)
* 作者: 小徐
* 郵箱: [email protected]
* QQ: 339534039
* 轉載請註明出處
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <dirent.h>

void print_usage(void);

void print_usage(void)
{
printf("Usage: test dirname\n");
}

int main(int argc,char *argv[])
{
DIR * dp;
struct dirent *filename;

if (argc < 2)
{
print_usage();
exit(1);
}

dp = opendir(argv[1]);
if (!dp)
{
fprintf(stderr,"open directory error\n");
return 0;
}
while (filename=readdir(dp))
{
printf("filename:%-10s\td_info:%ld\t d_reclen:%us\n",
filename->d_name,filename->d_ino,filename->d_reclen);
}
closedir(dp);
return 0;
}

將上面代碼保存為readdir.c執行下面的命令進行編譯測試
[root@phpos ~]# gcc readdir.c
[root@phpos ~]# ./a.out
Usage: test dirname
[root@phpos ~]# ./a.out /etc/samba/
filename:lmhosts d_info:49296 d_reclen:24s
filename:smb.conf d_info:49825 d_reclen:24s
filename:smbpasswd d_info:49402 d_reclen:24s
filename:.. d_info:47906 d_reclen:16s
filename:secrets.tdb d_info:49812 d_reclen:24s
filename:. d_info:49295 d_reclen:16s
filename:smbusers d_info:49377 d_reclen:24s
[root@phpos ~]# ./a.out /var/
filename:preserve d_info:31971 d_reclen:24s
filename:lock d_info:31966 d_reclen:16s
filename:yp d_info:31976 d_reclen:16s
filename:empty d_info:31962 d_reclen:24s
filename:run d_info:31972 d_reclen:16s
filename:lib d_info:31939 d_reclen:16s
filename:nis d_info:31969 d_reclen:16s
filename:local d_info:31965 d_reclen:24s
filename:spool d_info:31973 d_reclen:24s
filename:tmp d_info:31941 d_reclen:16s
filename:opt d_info:31970 d_reclen:16s
filename:log d_info:31959 d_reclen:16s
filename:crash d_info:31997 d_reclen:24s
filename:.. d_info:2 d_reclen:16s
filename:account d_info:32037 d_reclen:24s
filename:mail d_info:31968 d_reclen:16s
filename:cache d_info:31960 d_reclen:24s
filename:db d_info:31961 d_reclen:16s
filename:. d_info:31938 d_reclen:16s
[root@phpos ~]#
程序正常執行!到此完了呵呵!!

㈢ 如何用C語言獲取目錄下的文件和目錄列表

1、可以利用getenv函數來實現。
在Linux系統中,home目錄的定義是通過系統環境變數中的HOME變數值來確定的,在shell下可以通過
echo $HOME來查看。
而在C語言中,庫函數getenv可以用作獲取環境變數值。該函數位於stdlib.h, 原型為
char *getenv(char *name);
功能為獲取名字為name的環境變數字元串。
所以,下面代碼就可以獲取到home目錄名了:
2、常式:
char *home;
home = getenv("HOME");
printf("the home path is %s\n", home);

㈣ linux 下怎樣用c查看所有的目錄 以及目錄下所有的文件 並在屏幕顯示出來 求程序 就是用c實現ls功能嗎

#include <string.h>
#include <dirent.h>
#include <errno.h>
void print_dir (char *root)
{
DIR *dir;
struct dirent *ptr;
int count;
dir = opendir (root);
if (dir == NULL) {
perror ("fail to open dir");
exit (1);
}
errno = 0;
while ( (ptr = readdir (dir)) != NULL) {
if (strcmp (ptr->d_name, ".") == 0 || strcmp (ptr->d_name, "..") == 0)
continue;
if (ptr->d_type == DT_DIR) {
print_dir (path);
}
printf ("%s\n", ptr->d_name);
}
if (errno != 0) {
perror ("fail to read dir");
exit (1);
}
closedir (dir);
}

㈤ linux c怎麼獲取進程信息 當前目錄

//獲取當前進程名(進程目錄在函數內已獲取到)
boolGetLocalProgramName(char*processname)
{
charprocessdir[1024]={0};
char*path_end;
size_tlen=1024;

boolret=false;

do
{
if(readlink("/proc/self/exe",processdir,len)<=0)
{
fprintf(stderr,"[ERROR]cannotgetprocessname ");
break;
}

path_end=strrchr(processdir,'/');//進程目錄
if(path_end==NULL)
{
fprintf(stderr,"[ERROR]cannotparseprocessname ");
break;
}

++path_end;
*path_end='';
strcpy(processname,path_end);

ret=true;
}while(0);

returnret;
}

這是我以前的代碼,稍微改造一下就行。

㈥ Linux下用c語言打開文件路徑問題

C語言程序也是啟動一個進程, 所以他也也有環境變數, 默認是繼承父進程的環境變數;如果是shell界面直接啟動, 那麼就是繼承shell的環境變數; 如果是其他程序啟動這個那麼就是繼承那個程序的環境變數;
首先沒有搞清楚hello.html是可執行程序, 還是不可執行文件;現在我默認把他當作可執行文件
./表示當前目錄;即執行當前目錄下的hello.html; 如果沒有則報錯
而直接使用程序(hello.html)默認是先在PATH環境變數中查找; 如果PATH環境變數中沒有則報錯;

㈦ linux 下c語言利用readdir獲取文件夾目錄錯誤提示:segmentation fault~求達人看程序給解~

不說你了。
while(entry=readdir(dirpt));

這行後面有個分號發現沒,給我去掉。
這行就是個空語句。
佔位用的。可以這么理解
while(entry=readdir(dirpt))
這里啥都不幹;

下面那一行的entry 就成 NULL了,他沒有d_name,所以段錯誤

㈧ 在網上找到的linux下用C遍歷目錄的源代碼 具體看補充。。

1、系統裡面沒有/usr/keygoe/ini文件夾或沒有許可權。可以修改main, 遍歷命令行傳入的文件夾;
2、filename設置為[256][256],如果文件比較多,程序會崩潰的;
3、遍歷子文件夾時,只保存了文件名,沒有添加上級路徑。

㈨ linux c 查看當前目錄下是否有指定文件

1. Shell 版本
#獲取當前腳本所在絕對路徑
cur_dir=$(cd "$(dirname "$0")"; pwd)

2. C語言版本
方法一、用realpath函數。這種方法用於開機啟動程序獲取自身目錄會出錯
char current_absolute_path[MAX_SIZE];
//獲取當前目錄絕對路徑
if (NULL == realpath("./", current_absolute_path))
{
printf("***Error***\n");
exit(-1);
}
strcat(current_absolute_path, "/");
printf("current absolute path:%s\n", current_absolute_path);
方法二、用getcwd函數。這種方法用於開機啟動程序獲取自身目錄會出錯
char current_absolute_path[MAX_SIZE];
//獲取當前目錄絕對路徑
if (NULL == getcwd(current_absolute_path, MAX_SIZE))
{
printf("***Error***\n");
exit(-1);
}
printf("current absolute path:%s\n", current_absolute_path);

方法三、用readlink函數。這種方法最可靠,可用於開機啟動程序獲取自身目錄
char current_absolute_path[MAX_SIZE];
//獲取當前程序絕對路徑
int cnt = readlink("/proc/self/exe", current_absolute_path, MAX_SIZE);
if (cnt < 0 || cnt >= MAX_SIZE)
{
printf("***Error***\n");
exit(-1);
}
//獲取當前目錄絕對路徑,即去掉程序名
int i;
for (i = cnt; i >=0; --i)
{
if (current_absolute_path[i] == '/')
{
current_absolute_path[i+1] = '\0';
break;
}
}
printf("current absolute path:%s\n", current_absolute_path);

㈩ 如何在linux系統中用C語言編程實現以非遞歸的方式查詢指定目錄下所有子目錄的全部文件並保存文件名

把迭代得到的非文件文件夾項,即子目錄保存到一個stack中。
隨後逐個彈出棧頂元素並迭代之,就實現了以非遞歸方式遍歷文件夾。

閱讀全文

與linuxc獲取目錄相關的資料

熱點內容
如何上網上設個人加密賬戶 瀏覽:44
linux打開ssh服務 瀏覽:78
微信位置可以加密嗎 瀏覽:470
演算法蠻力法 瀏覽:438
隨機排練命令 瀏覽:147
python多進程並發 瀏覽:41
安卓軟體安裝如何躲避安全檢測 瀏覽:647
奇幻潮翡翠台源碼百度雲盤 瀏覽:187
什麼軟體可以免費pdf轉word 瀏覽:15
php正則表達式大全 瀏覽:394
androidntp時間 瀏覽:299
輪機長命令簿英文 瀏覽:148
oppo鈴聲設置被加密怎麼處理 瀏覽:548
粵苗app圖形驗證碼怎麼填 瀏覽:899
管家婆架設雲伺服器 瀏覽:254
php的登錄界面代碼 瀏覽:997
php開發客戶端 瀏覽:998
theisle測試服怎麼搜伺服器 瀏覽:447
廣播PDF 瀏覽:218
單片機編程300例匯編百度 瀏覽:35