linux系统调用函数 chmod/chown/truncate--修改文件属性
1.chmod修改文件权限所需头文件:#include<sys/stat.h>函数原型: int chmod(const char *filename,int mode)参数:filename为文件名,mode为文件权限,八进制数。返回值:成功返回0,失败返回-1,同时errno会被设置为合适值。应用实例:当前目录文件下:我们在应用chmod...
1.chmod 修改文件权限
所需头文件: #include<sys/stat.h>
函数原型: int chmod(const char *filename,int mode)
参数: filename为文件名,mode为文件权限,八进制数。
返回值:成功返回0,失败返回-1,同时errno会被设置为合适值。
应用实例:
当前目录文件下:
我们在应用chmod
函数修改其a.txt
的权限。
#include<stdio.h>
#include<sys/stat.h>
#include<stdlib.h>
int main()
{
int res = chmod("./a.txt",0777);
if(res == -1)
{
perror("chmod");
exit(1);
}
printf("chmod success!\n");
return 0;
}
2.修改文件所有者和所属组。
所需头文件: #include<unistd.h>
函数原型: int chown(const char *path,uid_t owner,gid_t group)
参数: path为文件路径,相对路径和绝对路径均可。 owner(无符号整型),用户ID。group(无符号整型)组ID。
返回值:成功返回0,失败返回-1,同时errno会被设置为一个合适的值。
注意:可以通过 /etc/passwd
访问用户ID,通过/etc/group
访问组ID。
使用man文档查看passwd的组成,man 5 passwd
。
3.修改文件大小。
所需头文件:
#include<unistd.h>
#include<sys/types.h>
函数原型: int truncate(const char *path,off_t length)
参数: path为文件名,length为为文件的最终大小。off_t
为长整型,long int
。
(1)最终大小比原来大,向后扩展。
(2)最终大小比原来小,删除后边的部分。
应用实例:
现在在当前目录文件下创建名为a.txt
的文件,再没行数如10个字符,且行为都有一个换行符,如下:
所以其大小为55。
现在我们在代码中分别进行扩大和缩小文件大小,观察结果进行对比:
//1.扩大a.txt文件
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
int res = truncate("a.txt",100);//将其扩大为100
if(res == -1)
{
perror("truncate");
exit(1);
}
else
{
printf(""truncate success!\n);
}
return 0;
}
由图可知,此时a.txt
文件已经扩大至100。我们查看一下此时a.txt
文件中的内容:
这里的^@
其实就是\0
。
和man文档中的描述是一致的。
//2.缩小a.txt文件
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
int res = truncate("a.txt",25);//将其缩小为25
if(res == -1)
{
perror("truncate");
exit(1);
}
else
{
printf(""truncate success!\n);
}
return 0;
}
执行后,查看此时的a.txt
文件的大小:
所以缩小源文件的大小会造成数据的丢失,使用请慎重。
更多推荐
所有评论(0)