Linux系统编程(4)文件夹操作

1.fleno

int fileno(FILE *stream)
  • 功能: 返回与文件流stream相关联的文件描述符。
  • 参数: stream是一个指向文件流的指针。
  • 返回值: 成功时返回文件描述符,出错时返回-1并设置errno

2. fdopen

FILE *fdopen(int fd, const char *mode)
  • 功能: 将现有的文件描述符fd转换为文件流,并指定文件打开模式mode
  • 参数:
    • fd: 文件描述符。
    • mode: 文件打开模式(如"r""w""a"等)。
  • 返回值: 成功时返回FILE *指针,出错时返回NULL并设置errno

3. opendir

DIR *opendir(const char *name)
  • 功能: 打开目录name并返回指向DIR结构体的指针。
  • 参数: name是目录的路径。
  • 返回值: 成功时返回DIR *指针,出错时返回NULL并设置errno
  • 用途: 用于在遍历目录内容之前打开目录。

4. readdir

struct dirent *readdir(DIR *dirp)
  • 功能: 读取目录流dirp中的下一个目录项。
  • 参数: dirp是由opendir返回的指向目录流的指针。
  • 返回值: 成功时返回指向dirent结构体的指针,表示下一个目录项;如果到达目录流的末尾或出错,返回NULL
  • 用途: 用于遍历目录中的所有条目。

5. closedir

int closedir(DIR *dirp)
  • 功能: 关闭由opendir打开的目录流dirp
  • 参数: dirp是指向目录流的指针。
  • 返回值: 成功时返回0,出错时返回-1并设置errno
  • 用途: 关闭目录流,释放与其相关的资源。

6. chdir

int chdir(const char *path)
  • 功能: 改变当前工作目录到path指定的目录。
  • 参数: path是目标目录的路径。
  • 返回值: 成功时返回0,出错时返回-1并设置errno
  • 用途: 改变进程的当前工作目录。

7. getcwd

char *getcwd(char *buf, size_t size)
  • 功能: 获取当前工作目录的绝对路径,并将其存储在buf中。
  • 参数:
    • buf: 用于存储路径的缓冲区。
    • size: 缓冲区的大小。
  • 返回值: 成功时返回buf指针,出错时返回NULL并设置errno
  • 用途: 获取当前工作目录的路径。

8. stat

int stat(const char *path, struct stat *buf)
  • 功能: 获取path指定文件的状态信息,并将其存储在buf指向的stat结构体中。
  • 参数:
    • path: 文件路径。
    • buf: 用于存储文件状态信息的stat结构体指针。
  • 返回值: 成功时返回0,出错时返回-1并设置errno

struct stat结构体

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

struct stat {
    dev_t     st_dev;     // ID of device containing file
    ino_t     st_ino;     // inode number
    mode_t    st_mode;    // file type and mode (permissions)
    nlink_t   st_nlink;   // number of hard links
    uid_t     st_uid;     // user ID of owner
    gid_t     st_gid;     // group ID of owner
    dev_t     st_rdev;    // device ID (if special file)
    off_t     st_size;    // total size, in bytes
    blksize_t st_blksize; // blocksize for filesystem I/O
    blkcnt_t  st_blocks;  // number of 512B blocks allocated
    time_t    st_atime;   // time of last access
    time_t    st_mtime;   // time of last modification
    time_t    st_ctime;   // time of last status change
};
  • st_dev: 包含文件的设备ID。表示文件所在的设备。
  • st_ino: 文件的inode编号。每个文件在文件系统中都有唯一的inode编号。
  • st_mode: 文件的类型和模式(权限)。包含文件类型信息(普通文件、目录、符号链接等)和权限信息。
  • st_nlink: 文件的硬链接数量。表示有多少个硬链接指向该文件。
  • st_uid: 文件所有者的用户ID。
  • st_gid: 文件所有者的组ID。
  • st_rdev: 设备ID(如果这是一个特殊文件,如字符设备或块设备)。
  • st_size: 文件的总大小,以字节为单位。
  • st_blksize: 文件系统I/O的块大小。建议进行I/O操作时使用的块大小。
  • st_blocks: 文件所占用的512字节块的数量。
  • st_atime: 文件上次访问的时间。
  • st_mtime: 文件上次修改的时间。
  • st_ctime: 文件状态最后改变的时间。
  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值