Linux文件属性操作函数
Posted fu_GAGA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件属性操作函数相关的知识,希望对你有一定的参考价值。
文件属性操作函数
1.1 access函数
#include <unistd.h>
int access(const char *pathname, int mode);
- 作用:判断某个文件是否有某个权限,或者某个文件是否存在
- 参数:
- pathname:要判断的文件路径
- mode:
- R_OK:判断是否有读权限
- W_OK:判断是否有写权限
- X_OK:判断是否有执行权限
- F_OK:判断文件是否存在
- 返回值:成功返回0,失败返回-1
例:access.c
文件(提前创建了a.txt
)
#include <unistd.h>
#include <stdio.h>
int main()
int ret = access("a.txt", F_OK);
if(ret == -1)
perror("access");
return -1;
printf("文件存在!!!\\n");
return 0;
编译运行
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ls
access.c a.txt
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ gcc access.c -o access
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ./access
文件存在!!!
1.2 chmod函数
chmod
——> Change Mode 修改权限
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
- 作用:修改文件的权限
- 参数:
- pathname:要修改的文件路径
- mode:需要修改的权限制,八进制的数
- 返回值:成功返回0,失败返回-1
【例】
原 a.txt
权限为 rw-rw-r--
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ll
总用量 24
drwxrwxr-x 2 fuerer fuerer 4096 3月 24 19:43 ./
drwxrwxr-x 14 fuerer fuerer 4096 3月 24 19:34 ../
-rwxrwxr-x 1 fuerer fuerer 8392 3月 24 19:39 access*
-rw-rw-r-- 1 fuerer fuerer 682 3月 24 19:39 access.c
-rw-rw-r-- 1 fuerer fuerer 0 3月 24 19:38 a.txt
-rw-rw-r-- 1 fuerer fuerer 0 3月 24 19:43 chmod.c
编写chmod.c
文件修改a.txt
的权限
#include <sys/stat.h>
#include <stdio.h>
int main()
int ret = chmod("a.txt", 0775);
if(ret == -1)
perror("chmod");
return -1;
return 0;
将其权限改为 0775 ——> rwxrwxr-x
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ gcc chmod.c -o chmod
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ./chmod
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ll
总用量 40
drwxrwxr-x 2 fuerer fuerer 4096 3月 24 19:46 ./
drwxrwxr-x 14 fuerer fuerer 4096 3月 24 19:34 ../
-rwxrwxr-x 1 fuerer fuerer 8392 3月 24 19:39 access*
-rw-rw-r-- 1 fuerer fuerer 682 3月 24 19:39 access.c
-rwxrwxr-x 1 fuerer fuerer 0 3月 24 19:38 a.txt*
-rwxrwxr-x 1 fuerer fuerer 8344 3月 24 19:46 chmod*
-rw-rw-r-- 1 fuerer fuerer 459 3月 24 19:46 chmod.c
1.3 chown函数
chown
——> Change Owner 修改其文件所有者
#include <unistd.h>
int chown(const char *pathname, uid_t owner, gid_t group);
参数:
- pathname:要修改的文件路径
- owner:修改后的文件所有者ID
- group:修改后的组ID
返回值:成功返回0,失败返回-1
如何查看用户ID?
vim /etc/passwd
如何查看组ID?
vim /etc/group
创建用户
sudo useradd 用户名
查看用户ID、组ID
id erer
uid=1001(erer) gid=1001(erer) 组=1001(erer)
1.4 truncate函数
#include <unistd.h>
#include <sys/types.h>
int truncate(const char *path, off_t length);
- 作用:缩减或扩展文件的尺寸至指定大小
- 缩减:会将多余的字符删除
- 扩展:使用空字符填充
- 参数:
- path:需要修改的文件的路径
- length:需要最终文件变成的大小
- 返回值:成功返回0,失败返回-1
创建 b.txt
文件:写入 hello,world
文件大小为12
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ll
总用量 44
drwxrwxr-x 2 fuerer fuerer 4096 3月 24 20:07 ./
drwxrwxr-x 14 fuerer fuerer 4096 3月 24 19:34 ../
-rwxrwxr-x 1 fuerer fuerer 8392 3月 24 19:39 access*
-rw-rw-r-- 1 fuerer fuerer 682 3月 24 19:39 access.c
-rw-rw-r-- 1 fuerer fuerer 12 3月 24 20:07 b.txt
-rwxrwxr-x 1 fuerer fuerer 8344 3月 24 19:50 chmod*
-rw-rw-r-- 1 fuerer fuerer 459 3月 24 19:49 chmod.c
-rw-rw-r-- 1 fuerer fuerer 0 3月 24 20:04 truncate.c
truncate.c
文件:
将 b.txt
文件扩容到 20 字节
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main()
int ret = truncate("b.txt", 20);
if(ret == -1)
perror("truncate");
return -1;
return 0;
编译执行后
fuerer@fuerer-virtual-machine:~/Linux/lesson13$ ll
总用量 60
drwxrwxr-x 2 fuerer fuerer 4096 3月 24 20:09 ./
drwxrwxr-x 14 fuerer fuerer 4096 3月 24 19:34 ../
-rwxrwxr-x 1 fuerer fuerer 8392 3月 24 19:39 access*
-rw-rw-r-- 1 fuerer fuerer 682 3月 24 19:39 access.c
-rw-rw-r-- 1 fuerer fuerer 20 3月 24 20:09 b.txt
-rwxrwxr-x 1 fuerer fuerer 8344 3月 24 19:50 chmod*
-rw-rw-r-- 1 fuerer fuerer 459 3月 24 19:49 chmod.c
-rwxrwxr-x 1 fuerer fuerer 8352 3月 24 20:09 truncate*
-rw-rw-r-- 1 fuerer fuerer 528 3月 24 20:08 truncate.c
后面全为空字符
以上是关于Linux文件属性操作函数的主要内容,如果未能解决你的问题,请参考以下文章