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: 文件状态最后改变的时间。