前言
如果,想要深入的学习Linux系统调用中access,chmod,chown,truncate这些有关于文件属性的操作函数,还是需要去自己阅读Linux系统中的帮助文档。
具体输入命令:
man 2 access/chmod/chown/truncate
即可查阅到完整的资料信息。
access函数
access函数是Linux系统API中的一员,它的作用是:
- 判断某个文件是否有某个权限,或者是判断文件是否存在。
它的函数原型是长这样的:
int access(const char *pathname, int mode);
接下来,我来介绍一下它的两个参数:
参数:
- pathname: 判断的文件路径
- mode:access函数要执行的某种模式(如下:系统定义的宏值)
R_OK: 判断是否有读权限
W_OK: 判断是否有写权限
X_OK: 判断是否有执行权限
F_OK: 判断文件是否存在
然后再来说一下这个函数的返回值:成功返回0, 失败返回-1 。
- 这个意思就是说如果可以这个文件存在,我们就可以返回0,如果不存在则返回1。
在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:
#include <unistd.h>
代码举例:判断一个文件是否存在
#include <unistd.h>
#include <stdio.h>
int main (){
int ret = access("a.txt",F_OK);
if(ret == -1){
perror("access");
return -1;
}
printf("文件存在\n");
}
chmod函数
chmod函数是Linux系统API中的一员,它的作用是:
- 修改文件的权限
它的函数原型是长这样的:
int chmod(const char *filename, int mode);
接下来,我来介绍一下它的两个参数与返回值:
参数:
- pathname: 需要修改的文件的路径
- mode:需要修改的权限值,八进制的数
返回值:成功返回0,失败返回-1
在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:
#include <sys/stat.h>
代码举例:修改一个文件的权限
#include <sys/stat.h>
#include <stdio.h>
int main (){
int ret = chmod("a.txt",0777);
if(ret == 0){
perror("chmod");
return -1;
}
}
chown函数
chown函数是Linux系统API中的一员,它的作用是:
- 修改文件的所有者和所在组
它的函数原型是长这样的:
int chown(const char *path, uid_t owner, gid_t group);
接下来,我来介绍一下它的三个参数与返回值:
参数:
- pathname: 需要修改的文件的路径
- uid_t:需要修改的用户id号
- gid_t:需要修改的组id号
返回值:成功返回0,失败返回-1
在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:
#include <unistd.h>
说明一下,关于所有的用户的id与用户所在组的id是记录在一个单独的文件里的,我们可以用vim来打开它。
vim /etc/passwd
truncate函数
truncate函数是Linux系统API中的一员,它的作用是:
- 修改文件大小
它的函数原型是长这样的:
int truncate(const char *path, off_t length);
接下来,我来介绍一下它的2个参数与返回值:
参数:
- path: 需要修改的文件的路径
- length: 需要最终文件变成的大小
返回值:
成功返回0, 失败返回-1
在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:
#include <unistd.h>
#include <sys/types.h>
代码演示:修改一个文件的大小
int main(){
int ret = truncate("b.txt",5);
if(ret == -1){
perror("truncate");
return -1;
}
printf("修改成功\n");
}
假设,这个b.txt的文本内容是hello,world大小是11个字节,我现在将文件大小缩减为5,那b.txt中的内容便只剩下了hello。
truncate函数对应的命令
因为学习了truncate这个系统内置函数嘛,我就去猜想有没有对应的这个命令,结果一猜一个对。
使用命令:
truncate 文件名称 --size 文件字节数
就可以修改文件的大小。在我的电脑上如果修改后的文件字节数比原来的大,那么就会将多余的字节截断,如果比修改后的文件字节数小,则就会像文件中填充一些特殊的字符。