小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

dirent結(jié)構(gòu) --文件夾相關(guān) - lizzy115的日志 - 網(wǎng)易博客

 omcc 2011-01-10

stat(由文件描述詞取得文件狀態(tài))

相關(guān)函數(shù)

statfstat,chmod,chown,readlink,utime

表頭文件

#include<sys/stat.h>
#include<unistd.h>

定義函數(shù)

int lstat (const char * file_name.struct stat * buf);

函數(shù)說明

lstat()stat()作用完全相同,都是取得參數(shù)file_name所指的文件狀態(tài),其差別在于,當文件為符號連接時,lstat()會返回該link本身的狀態(tài)。詳細內(nèi)容請參考stat()

返回值

執(zhí)行成功則返回0,失敗返回-1,錯誤代碼存于errno。

范例

參考stat()。
 

 

 

 


opendir
(打開目錄)

相關(guān)函數(shù)

open,readdir,closedir,rewinddirseekdir,telldir,scandir

表頭文件

#include<sys/types.h>
#include<dirent.h>

定義函數(shù)

DIR * opendir(const char * name);

函數(shù)說明

opendir()用來打開參數(shù)name指定的目錄,并返回DIR*形態(tài)的目錄流,和open()類似,接下來對目錄的讀取和搜索都要使用此返回值。

返回值

成功則返回DIR* 型態(tài)的目錄流,打開失敗則返回NULL。

錯誤代碼

EACCESS 權(quán)限不足
EMFILE
已達到進程可同時打開的文件數(shù)上限。
ENFILE
已達到系統(tǒng)可同時打開的文件數(shù)上限。
ENOTDIR
參數(shù)name非真正的目錄
ENOENT
參數(shù)name 指定的目錄不存在,或是參數(shù)name 為一空字符串。
ENOMEM
核心內(nèi)存不足。
 

 

 


readdir
(讀取目錄)

相關(guān)函數(shù)

open,opendir,closedir,rewinddir,seekdirtelldir,scandir

表頭文件

#include<sys/types.h>
#include<dirent.h>

定義函數(shù)

struct dirent * readdir(DIR * dir);

函數(shù)說明

readdir()返回參數(shù)dir目錄流的下個目錄進入點。
結(jié)構(gòu)dirent定義如下
struct dirent
{
ino_t d_ino;
ff_t d_off;
signed short int d_reclen;
unsigned char d_type;
har d_name[256];
};
d_ino
此目錄進入點的inode
d_off
目錄文件開頭至此目錄進入點的位移

d_reclen _name
的長度,不包含NULL字符
d_type d_name
所指的文件類型
d_name
文件名

返回值

成功則返回下個目錄進入點。有錯誤發(fā)生或讀取到目錄文件尾則返回NULL。

附加說明

EBADF參數(shù)dir為無效的目錄流。

范例

#include<sys/types.h>
#include<dirent.h>
#include<unistd.h>
main()
{
DIR * dir;
struct dirent * ptr;
int i;
dir =opendir(“/etc/rc.d”);
while((ptr = readdir(dir))!=NULL)
{
printf(“d_name: %sn”,ptr->d_name);
}
closedir(dir);
}


readlink
(取得符號連接所指的文件)

相關(guān)函數(shù)

stat,lstat,symlink

表頭文件

#include<unistd.h>

定義函數(shù)

int readlink(const char * path ,char * buf,size_t bufsiz);

函數(shù)說明

readlink()會將參數(shù)path的符號連接內(nèi)容存到參數(shù)buf所指的內(nèi)存空間,返回的內(nèi)容不是以NULL作字符串結(jié)尾,但會將字符串的字符數(shù)返回。若參數(shù)bufsiz小于符號連接的內(nèi)容長度,過長的內(nèi)容會被截斷。

返回值

執(zhí)行成功則傳符號連接所指的文件路徑字符串,失敗則返回-1,錯誤代碼存于errno

錯誤代碼

EACCESS 取文件時被拒絕,權(quán)限不夠
EINVAL
參數(shù)bufsiz 為負數(shù)
EIO I/O
存取錯誤。
ELOOP
欲打開的文件有過多符號連接問題。
ENAMETOOLONG
參數(shù)path的路徑名稱太長
ENOENT
參數(shù)path所指定的文件不存在
ENOMEM
核心內(nèi)存不足
ENOTDIR
參數(shù)path路徑中的目錄存在但卻非真正的目錄。

 

 

 

remove(刪除文件)

相關(guān)函數(shù) link,rename

表頭文件

#include<stdio.h>

定義函數(shù)

int remove(const char * pathname);

函數(shù)說明

remove()會刪除參數(shù)pathname指定的文件。如果參數(shù)pathname為一文件,則調(diào)用unlink()處理,若參數(shù)pathname為一目錄,則調(diào)用rmdir()來處理。請參考unlink()rmdir()

返回值

成功則返回0,失敗則返回-1,錯誤原因存于errno。

錯誤代碼

EROFS 欲寫入的文件存在于只讀文件系統(tǒng)內(nèi)
EFAULT
參數(shù)pathname指針超出可存取內(nèi)存空間
ENAMETOOLONG
參數(shù)pathname太長
ENOMEM
核心內(nèi)存不足
ELOOP
參數(shù)pathname有過多符號連接問題
EIO I/O
存取錯誤。
 

 

 


rename
(更改文件名稱或位置)

相關(guān)函數(shù)

link,unlink,symlink

表頭文件

#include<stdio.h>

定義函數(shù)

int rename(const char * oldpath,const char * newpath);

函數(shù)說明

rename()會將參數(shù)oldpath 所指定的文件名稱改為參數(shù)newpath所指的文件名稱。若newpath所指定的文件已存在,則會被刪除。

返回值

執(zhí)行成功則返回0,失敗返回-1,錯誤原因存于errno

范例

/* 設(shè)計一個DOS下的rename指令rename 舊文件名新文件名*/
#include <stdio.h>
void main(int argc,char **argv)
{
if(argc<3){
printf(“Usage: %s old_name new_namen”,argv[0]);
return;
}
printf(“%s=>%s”,argc[1],argv[2]);
if(rename(argv[1],argv[2]<0)
printf(“error!n”);
else
printf(“ok!n”);
}
 

 

 


rewinddir
(重設(shè)讀取目錄的位置為開頭位置)

相關(guān)函數(shù)

openopendir,closedirtelldir,seekdir,readdir,scandir

表頭文件

#include<sys/types.h>
#include<dirent.h>

定義函數(shù)

void rewinddir(DIR *dir);

函數(shù)說明

rewinddir()用來設(shè)置參數(shù)dir 目錄流目前的讀取位置為原來開頭的讀取位置。

返回值

 

錯誤代碼

EBADF dir為無效的目錄流

范例

#include<sys/types.h>
#include<dirent.h>
#include<unistd.h>
main()
{
DIR * dir;
struct dirent *ptr;
dir = opendir(“/etc/rc.d”);
while((ptr = readdir(dir))!=NULL)
{
printf(“d_name :%sn”,ptr->d_name);
}
rewinddir(dir);
printf(“readdir again!n”);
while((ptr = readdir(dir))!=NULL)
{
printf(“d_name: %sn”,ptr->d_name);
}
closedir(dir);
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多