C语言中fchdir()函数和rewinddir()函数的使用详解
C语言fchdir()函数:改变当前工作目录
头文件:
#include<unistd.h>
定义函数:
intfchdir(intfd);
函数说明:fchdir()用来将当前的工作目录改变成以参数fd所指的文件描述词。
返回值:执行成功则返回0,失败返回-1,errno为错误代码.
范例
#include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<unistd.h> main() { intfd; fd=open("/tmp",O_RDONLY); fchdir(fd); printf("currentworkingdirectory:%s\n",getcwd(NULL,NULL)); close(fd); }
执行:
currentworkingdirectory:/tmp
C语言rewinddir()函数:重设读取目录的位置为开头位置
头文件:
#include<sys/types.h>#include<dirent.h>
定义函数:
voidrewinddir(DIR*dir);
函数说明:rewinddir()用来设置参数dir目录流目前的读取位置为原来开头的读取位置.
错误代码:EBADFdir为无效的目录流。
范例
#include<sys/types.h> #include<dirent.h> #include<unistd.h> main() { DIR*dir; structdirent*ptr; dir=opendir("/etc/rc.d"); while((ptr=readdir(dir))!=NULL) { printf("d_name:%s\n",ptr->d_name); } rewinddir(dir); printf("readdiragain!\n"); while((ptr=readdir(dir))!=NULL) { printf("d_name:%s\n",ptr->d_name); } closedir(dir); }
执行:
d_name:. d_name:.. d_name:init.d d_name:rc0.d d_name:rc1.d d_name:rc2.d d_name:rc3.d d_name:rc4.d d_name:rc5.d d_name:rc6.d d_name:rc d_name:rc.local d_name:rc.sysinit readdiragain! d_name:. d_name:.. d_name:init.d d_name:rc0.d d_name:rc1.d d_name:rc2.d d_name:rc3.d d_name:rc4.d d_name:rc5.d d_name:rc6.d d_name:rc d_name:rc.local d_name:rc.sysinit