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。

 

posted @ 2021-06-05 08:41  博客员_小李  阅读(108)  评论(0)    收藏  举报