当前位置: 首页 > news >正文

Linux系统调用之文件属性操作函数

前言

如果,想要深入的学习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 文件字节数

就可以修改文件的大小。在我的电脑上如果修改后的文件字节数比原来的大,那么就会将多余的字节截断,如果比修改后的文件字节数小,则就会像文件中填充一些特殊的字符。

http://www.lryc.cn/news/28192.html

相关文章:

  • VMware 安装 银河麒麟高级服务器操作系统 V10 + QT 开发环境搭建
  • 2023年疫情开放,国内程序员薪资涨了还是跌了?大数据告诉你答案
  • 太赫兹频段耦合器设计相关经验总结
  • 反弹shell数据不回显带外查询pikaqiu靶场搭建
  • 按键修改阈值功能、报警功能、空气质量功能实现
  • spring重点整理篇--springMVC(嘿嘿,开心哟)
  • 图像融合评估指标Python版
  • 20230303----重返学习-函数概念-函数组成-函数调用-形参及匿名函数及自调用函数
  • Java面试题总结
  • 深圳大学计软《面向对象的程序设计》实验7 拷贝构造函数与复合类
  • Java的JVM(Java虚拟机)参数配置
  • leetcode 困难 —— 数据流的中位数(优先队列)
  • 7个常用的原生JS数组方法
  • 一、一篇文章打好高数基础-函数
  • pipenv的基本使用
  • OpenCV入门(三)快速学会OpenCV2图像处理基础
  • 基于PySide6的MySql数据库快照备份与恢复软件
  • BI不是报表,千万不要混淆
  • sizeof以及strlen的用法以及注意事项
  • 数据结构-链表-单链表(3)
  • 【SpringBoot初级篇】JdbcTemplate常用方法
  • React(三):脚手架、组件化、生命周期、父子组件通信、插槽、Context
  • [教程]使用 Git 克隆指定分支
  • Redis实现服务注册与服务发现源码阅读(Go语言)
  • 论文复现-3
  • 667知识点 | 经过三年实战检验的667知识清单
  • 后端快速上手前端三剑客 HtmlCSSJavaScript
  • Cdiscount、Allegro如何利用测评补单自养号提升店铺权重和流量
  • 第16天-性能压测:压力测试,性能监控,优化QPS,Nginx动静分离
  • 【python 基础篇 十一】python的函数-------函数的偏函数 高阶函数 返回函数 匿名函数 闭包