您的位置:首页 > 运维架构

rename(),unlink(),getcwd(),chdir(),opendir(),readdir(),closedir()函数

2016-03-14 10:04 423 查看


1.rename(),unlink(),remove()函数

#include <stdio.h>

原型:int rename(const char *oldpath,const char *newpath); rename会将参数oldpath所指定的文件名改为参数newpath所指定的文件名,若newpath存在,则原文件会被删除;函数执行成功返回0,错误返回-1;

#include <unistd.h>

int unlink(const char *pathname); int remove(const char *pathname); 函数参数解析:unlink系统调用从文件系统里删除一个文件,如果文件的链接数为0,但是有进程打开了这个文件,文件暂时不删除,直到所有打开这个文件的进程结束文件才被删除.参数pathname 若指向一个符号链接,则该链接被删除,若指向的是一个socket(套接字文件),FIFO(命名管道)或设备文件,该文件的名字被删除,但已经打开的这些文件仍能使用这些文件;函数执行成功返回0 错误-1;


2.getcwd()函数,chdir 函数()

include <unistd.h>

原型:int *getcwd(char *buf,size_t size); int *get_current_dir_name(void); int *getwd(char *buf);

getcwd()会将当前的工作目录的绝对路径复制到参数 buf所指的内存空间,参数size为buf的空间大小,在调用此函数前,buf所指的内存空间要足够大,若工作目录的绝对路径的字符串超过参数size,则返回NULL.

 如果buf 参数为NULL,getcwd()会根据参数size字符串的长度来决定配置内存的大小,执行成功将结果复制到参数buf所指的内存空间,失败返回NULL;

如果定义了_GNU_SOURCE,则可以使用函数get_current_dir_name获取当前的工作目录,该函数用malloc分配空间来保存工作目录的绝对路径;

如果定义了_BSD_SOURCE或_XOPEN_SOURCE_EXTENDED,也可以使用getwd获取当前工作目录,该函数不使用malloc分配任何空间,参数buf之指向的空间大小至少为PATH_MAX,getwd仅返回工作目录绝对路径的前PATH_MAX个字符;

2.include <unistd.h> 原型:int chdir(const char *path); int fchdir(int fd); 函数参数解析:chdir用来将当前的工作目录改为由参数path指定的目录,fchdir用来将当前工作目录改为由参数fd(文件描述符) 指定的目录.函数执行成功返回0,错误返回-1;


3.opendir(),readdir(),closedir()函数

1.#include <sys/types.h> #include <dirent.h> 原型:DIR *opendir(const char *name); opendir 用来打开参数name指定的目录,并返回DIR*形态的目录流,接下来对目录的读取和搜索都要使用此返回值,成功返回DIR*形态流,失败返回NULL; 2.#include <sys//types.h> #incldue <durent.h> 原型:struct dirent *readdir(DIR *dir); readdir从参数dir形态目录流读取目录项信息,返回一个struct
dirent结构的指针; struct dirent 的定义如下: struct dirent { long d_ino; //i节点 off_t d_off; //指目录文件开头至此目录进入点的位移 unsigned short d_reclen; //目录的长度 char d_name [NAME_MAX+1] //文件名及其绝对路径 } 3.#include <sys/types.h> #include
<dirent.h> int closedir(DIR *dir); 函数参数解析:用来关闭参数dir指向的目录,成功返回0,错误返回-1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: