一、getcwd函数和chdir函数
1.当前进程的工作目录
2.getcwd函数原型
/*
buf:工作目录保存到buf中
size:buf的大小
返回值:失败返回NULL
*/
char*getcwd(char*buf,size_tsize);
3.chdir函数
/*
path:修改的路径
返回值:成功为0,失败为-1
*/
char*chdir(constchar*path);
4.练习一个进程的目录,并打印到屏幕
int main(int argc,char * argv[])
{
char * ret;
char path[1024] = {‘\0’};
ret = getcwd(path,1024);
if(ret == NULL)
{
perror(“getcwd error”);
exit(-1);
}
write(STDOUT_FILENO,path,1024);
chdir(“/home/yjt”);
ret = getcwd(path,1024);
if(ret == NULL)
{
perror(“getcwd error”);
exit(-1);
}
write(STDOUT_FILENO,path,1024);
return 0;
}
二、目录操作函数
依赖文件:dirent.h
2-1:opendir函数、closedir函数
1.打开目录文件
2.函数原型
/*
参数:name—打开的目录文件
返回值:执行目录文件的结构体指针
*/
DIR*opendir(constchar*name);
3.关闭目录文件
4.函数原型
/*
参数:dirp—要关闭文件的目录
返回值:成功为0,失败为-1
*/
int closedir(DIR*dirp);
2-2:读取目录文件,readdir
1.读取目录里面的文件信息
2.函数原型
/*
参数:dp—要读取的目录文件
返回值:读取到最后一项返回NULL,errno不变,失败的话errno会变。
成功为文件描述文件的结构体
*/
structdirent*readdir(DIR*dp);
structdirent
{
ino_td_ino;//INode
off_td_off;
unsignedshortd_reclen;
unsignedchard_type;
chard_name[]//FILE_NAM
}
三、dup和dup2
1.dup用于
作用:复制个新的文件描述符号,并且和oldfd指向同一个文件
intdup(intoldfd);
2.dup2
作用:让newfd指向oledfd的文件
intdup2(intoldfd,intnewfd)
int dup2(int oldfd,int newfd);
1.实现ls
intmain(intargc,char*argv[])
{
DIR*dp;
structdirent*file=NULL;
dp=opendir(“/home/yjt”);
if(dp==NULL)
{
perror(“opendie error”);
exit(-1);
}
while( (file=readdir(dp)) !=NULL)
{
if(file->d_name[0] !=’.’)
printf(“%s\n”,file->d_name);
}
return0;
}