Linux系统调用之文件属性操作函数
创始人
2024-05-28 15:10:01
0

前言

如果,想要深入的学习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

代码举例:判断一个文件是否存在

#include 
#include 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

代码举例:修改一个文件的权限

#include 
#include 
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

说明一下,关于所有的用户的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
#include

代码演示:修改一个文件的大小

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 文件字节数

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

相关内容

热门资讯

国家矿山安监局公布煤矿火灾等3... 为指导煤矿提升火灾、瓦斯、露天煤矿边坡灾害防控能力,国家矿山安全监察局组织技术支撑团队编制了《煤矿火...
县长张汉坤,任上被查 转自:北京日报客户端据江西省纪委监委5月6日消息,浮梁县政府县长张汉坤涉嫌严重违纪违法,目前正接受景...
纵横通信涨2.06%,成交额3... 5月6日,纵横通信盘中上涨2.06%,截至10:23,报15.84元/股,成交3726.07万元,换...
尤洛卡涨2.07%,成交额40... 5月6日,尤洛卡盘中上涨2.07%,截至10:27,报6.40元/股,成交4051.77万元,换手率...
九鼎投资涨2.07%,成交额4... 5月6日,九鼎投资盘中上涨2.07%,截至10:20,报13.31元/股,成交4699.74万元,换...
国盾量子涨2.03%,成交额9... 5月6日,国盾量子盘中上涨2.03%,截至10:23,报245.20元/股,成交9113.86万元,...
清远连山四月八“牛王诞”活动举... 中新网清远5月6日电 (张璐)5月5日(农历四月初八),2025年广东“四季春晚”春季展示活动——连...
三羊马涨2.01%,成交额25... 5月6日,三羊马盘中上涨2.01%,截至10:23,报37.48元/股,成交2573.56万元,换手...
赴港IPO!建邦高科递表港交所 转自:北京商报北京商报讯(记者 马换换 王蔓蕾)近期,港交所官网显示,建邦高科有限公司(以下简称“建...
上海贝岭涨2.08%,成交额4... 5月6日,上海贝岭盘中上涨2.08%,截至10:23,报35.78元/股,成交4.15亿元,换手率1...
奥普光电涨2.03%,成交额7... 5月6日,奥普光电盘中上涨2.03%,截至10:23,报38.62元/股,成交7659.19万元,换...
AI算力概念股走强,天源迪科“... 每经AI快讯,5月6日,AI算力概念股走强,天源迪科“20cm”涨停,超讯通信、科泰电源(维权)、光...
万国黄金集团盘中涨超12% 公... .ct_hqimg {margin: 10px 0;} .hqimg_wrapper {text-a...
捷克将在境内建设F-16训练基... 本文转自【央视新闻】日前,乌克兰总统泽连斯基访问捷克,双方5日达成协议,捷克未来将在境内建立F-16...
“五一”假期收官!3.14亿人... 文/王敬5月6日,文化和旅游部公布2025年“五一”假期文化和旅游市场情况。数据显示,假期5天全国国...
从乌鲁木齐走来的辅导员,把团结... 视频:辅导员艾克热木·艾尔肯:21年坚守 靠的是一颗真心来源:中国新闻网中新网北京5月6日电(林卓玮...
力星股份涨2.05%,成交额2... 5月6日,力星股份盘中上涨2.05%,截至10:14,报15.91元/股,成交2.04亿元,换手率5...
汇纳科技涨2.03%,成交额1... 5月6日,汇纳科技盘中上涨2.03%,截至10:06,报26.66元/股,成交1507.36万元,换...
荣晟环保涨2.05%,成交额1... 5月6日,荣晟环保盘中上涨2.05%,截至10:28,报11.96元/股,成交1393.00万元,换...
星球石墨涨2.13%,成交额1... 5月6日,星球石墨盘中上涨2.13%,截至10:08,报27.28元/股,成交1210.20万元,换...