7. 目录操作
1.创建目录
创建目录命令:mkdir 目录名称
创建目录函数:
#include <sys/stat.h> int mkdir(const char* pathname, mode_t mode); int mkdirat(int fd, const char* pathname, mode_t mode);
第一个参数pathname是目录的路径,第二个是设置要创建目录的权限
创建成功返回0,失败返回-1
2.删除目录
删除目录命令:rmdir 目录名称
删除目录函数:
#include <unistd.h> int rmdir(const char* pathname);
删除pathname文件夹,删除成功返回0,失败返回-1
要删除文件夹前提是文件夹是空的,否则不能成功删除
3.读目录
#include <dirent.h> DIR* opendir(const char* pathname); DIR* fdopendir(int fd);
首先,opendir函数打开一个文件夹,返回一个DIR的结构指针,fdopendir和opendir的功能类似,只是它接受一个已经打开的文件描述符,返回这个文件描述符的DIR信息。
得到DIR结构指针后,使用下面的函数读取目录中的文件:
#include <dirent.h> struct dirent* readdir(DIR* dp);
这个函数参数为DIR结构指针,返回一个dirent的结构指针,dirent的结构如下:
struct dirent
{
long d_ino; /* inode number 索引节点号 */
off_t d_off; /* offset to this dirent 在目录文件中的偏移 */
unsigned short d_reclen; /* length of this d_name 文件名长 */
unsigned char d_type; /* the type of d_name 文件类型 */
char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */
}
可以通过循环调用readdir函数遍历文件夹下的所有文件。
在操作结束后,通过调用closedir函数关闭目录结构并释放相应的内存:
int closedir(DIR* dp);
函数调用成功返回0,失败返回-1。
4.改变用户目录
我们可以通过下列函数来改变当前进程的用户目录:
#include <unistd.h> int chdir(const char* pathname); int fchdir(int fd);
chdir函数接收一个路径,将这个路径作为当前进程的用户目录。
fchdir函数接收一个文件描述符,将文件描述符所在路径作为当前进程的用户目录。
这两个函数只会作用于当前进程,不会影响其他进程。
5.获得用户目录
#include <unistd.h> char* getcwd(char* buf, size_t size);
此函数返回用户目录,缓冲区不足时返回NULL否则返回buf。

浙公网安备 33010602011771号