文件属性与目录操作函数
文件属性操作函数
access
用于检查调用进程是否具有对指定文件的某种访问权限,或者文件是否存在。
1 |
|
pathname:指向要检查的文件或目录的路径名的字符串指针。
mode:指定要检查的访问权限模式,它可以是以下几个常量的按位或组合:
R_OK:检查是否有读权限。
W_OK:检查是否有写权限。
X_OK:检查是否有执行权限。
F_OK:检查文件是否存在。
返回值
成功:如果进程具有指定的访问权限或者文件存在(根据 mode 参数),则返回 0。
失败:返回 -1,并设置 errno 来指示具体的错误,例如 EACCES 表示没有相应的权限,ENOENT 表示文件不存在。
chmod
用于修改文件或目录的权限。
1 |
|
pathname:指向要修改权限的文件或目录的路径名的字符串指针。
mode:指定新的权限模式,通常使用八进制数表示,例如 0644 表示文件所有者有读写权限,组用户和其他用户有只读权限。也可以使用一些常量的按位或组合,如 S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH 与 0644 是等价的。
返回值
成功:返回 0。
失败:返回 -1,并设置 errno 来指示具体的错误,例如 EACCES 表示没有足够的权限来修改文件权限,ENOENT 表示文件不存在。
truncate
用于将文件截断为指定的长度。
1 |
|
path:指向要截断的文件的路径名的字符串指针。
length:指定的文件新长度,类型为 off_t。
返回值
成功:返回 0。
失败:返回 -1,并设置 errno 来指示错误原因,如 EACCES 表示无权限修改文件,ENOENT 表示文件不存在。
目录操作函数
chdir
用于改变当前工作目录,也就是让程序后续的文件操作(如相对路径的文件读写)基于新指定的目录来执行。
1 |
|
path:一个指向字符串的指针,代表要切换到的目标目录的路径。可以是绝对路径(如 /home/user/documents),也可以是相对路径(如 ./subdir)。
返回值
成功:返回 0,表示当前工作目录已成功切换到指定路径。
失败:返回 -1,同时会设置 errno 变量来指示具体的错误原因。常见的错误包括 ENOENT(指定的目录不存在)、EACCES(没有权限访问该目录)等。
mkdir
用于创建一个新的目录。
1 |
|
pathname:指向要创建的目录的路径名的字符串指针。
mode:指定新创建目录的权限模式,通常用八进制数表示,例如 0755 表示目录所有者具有读、写、执行权限,组用户和其他用户具有读和执行权限。
返回值
成功:返回 0,表示目录创建成功。
失败:返回 -1,并设置 errno 变量。可能的错误有 EEXIST(指定路径的目录已经存在)、EACCES(没有权限在指定位置创建目录)等。
rename
可用于重命名文件或目录,也可以将文件或目录从一个位置移动到另一个位置(前提是目标位置在同一文件系统中)。
1 |
|
oldpath:指向要重命名或移动的文件或目录的当前路径名的字符串指针。
newpath:指向文件或目录的新路径名的字符串指针。
返回值
成功:返回 0,表示重命名或移动操作成功完成。
失败:返回 -1,同时设置 errno 变量。常见错误包括 ENOENT(旧路径的文件或目录不存在)、EEXIST(新路径的文件或目录已经存在且不能被覆盖)等。
目录遍历函数
opendir
用于打开一个目录,并返回一个指向 DIR 类型对象的指针,该对象表示已打开的目录流。
1 |
|
readdir
从 opendir 打开的目录流中读取下一个目录项,并返回一个指向 struct dirent 类型对象的指针,该对象包含了目录项的相关信息,如文件名等。当没有更多目录项时,返回 NULL。
1 |
|
struct dirent结构体通常包含以下成员:
1 | struct dirent { |
closedir
关闭由 opendir 打开的目录流,释放相关资源。
1 |
|