linux的readdir和readdir r函式

2021-08-25 14:35:35 字數 2184 閱讀 9156

dir *opendir( const char *name);

dir *fdopendir( int fd);

注意:這是個庫函式

struct dirent *readdir( dir *dirp);

int readdir_r(    dir *dirp,     struct dirent *entry,    struct dirent **result);

檔案目錄結構體:

struct dirent ;
d_type的值為:dt_blk this is a block device.

dt_chr this is a character device.

dt_dir this is a directory.

dt_fifo this is a named pipe (fifo).

dt_lnk this is a symbolic link.

dt_reg this is a regular file.

dt_sock this is a unix domain socket.

dt_unknown the file type is unknown.

注意:

每次使用readdir後,readdir會讀到下乙個檔案,readdir是依次讀出目錄中的所有檔案,每次只能讀乙個

這個特性和readdir_r()一樣

#include #include #include int main(int argc, char **argv)

pdir = opendir(argv[1]);

if (null == pdir)

while (1)

else

printf("name:[%s] \n", pent->d_name);

cnt++;

} else

};printf("總檔案數為:%d\n", cnt);

return 0;

}

結果:

$ ./a.out .

是普通檔案:name:[a.c]

不是普通檔案:name:[.]

不是普通檔案:name:[..]

是普通檔案:name:[a.out]

不是普通檔案:name:[12_sr]

不是普通檔案:name:[10_sr]

不是普通檔案:name:[17_sr]

不是普通檔案:name:[15_sr]

不是普通檔案:name:[14.sr]

不是普通檔案:name:[18_sr]

不是普通檔案:name:[udp]

不是普通檔案:name:[16_sr]

不是普通檔案:name:[tcp]

總檔案數為:13

注意:這三個引數

#include #include #include #include int main(int argc, char **argv)

pdir = opendir(argv[1]);

if (null == pdir)

ret = readdir_r(pdir , entry , result);

printf("return :%d \n", ret);

printf("name :[%s] \n", entry->d_name);

printf("name :[%s] \n", result[0]->d_name);

ret = readdir_r(pdir , entry , result);

printf("return :%d \n", ret);

printf("name :[%s] \n", entry->d_name);

printf("name :[%s] \n", result[0]->d_name);

return 0;

}

結果:

R筆記 R的記憶體管理和垃圾清理

筆記 1 r輸入命令時速度不要太快,終究是個統計軟體,不是程式設計!2 memory.limit 檢視當前作業系統分配記憶體給r的最大限度 單位是m?3 要經常 rm object 或者 rm list ls 和 gc 釋放記憶體空間 4 盡量提前設定矩陣大小固定不變,矩陣每增長一次,即使賦給同名的...

n 和 r的區別

n 是換行,r是回車 在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。於是,研製人員想了個辦法...

r和 n的區別

r return 到當前行的最左邊。n newline 向下移動一行,並不移動左右。linux中 n表示回車 換行 windows中 r n表示回車 換行。mac中 r表示回車 換行。歷史 回車 carriage return 和 換行 line feed 這兩個概念的來歷和區別。在計算機還沒有出現...