用read计算文件大小
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<head.h>
int main(int argc, const char *argv[])
{
int fl=open("2.c",O_RDONLY);
if(fl<0)
{
perror("open");
return -1;
}
printf("打开成功");
ssize_t t;
char a;
int count=0;
while(1)
{
t=read(fl,&a,1);
if(t==0)
{
break;
}
else
{
count++;
}
}
printf("%ld\n",count);
close(fl);
return 0;
}
用循环实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<head.h>
void get_filepermission(mode_t m)
{
int i=0400;
int j=0;
while(j<3)
{
if((m&i)!=0)
putchar('r');
else
putchar('-');
if((m&i>>1)!=0)
putchar('w');
else
putchar('-');
if((m&i>>2)!=0)
putchar('x');
else
putchar('-');
i=i>>3;
j++;
}
}
int main(int argc, const char *argv[])
{
struct stat fl;
if(stat("3.c",&fl)<0)
{
perror("stat");
return -1;
}
//文件的类型和权限
printf("mode:0%o\n",fl.st_mode);
get_filepermission(fl.st_mode);
//文件的硬件连接数
printf("link:%ld\n",fl.st_nlink);
//文件的所属用户
printf("uid:%d\n",fl.st_uid);
//文件所属组的用户
printf("gid:%d\n",fl.st_gid);
//文件大小
printf("size:%ld\n",fl.st_ctime);
return 0;
}
图片cpy
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
int main(int argc, const char *argv[])
{
int fd=open("./1.png",O_WRONLY|O_CREAT|O_TRUNC,0777);
int fd1=open("2023-07-31 14-59-47 的屏幕截图.png",O_RDONLY);
if(fd<0)
{
perror("open");
return -1;
}
printf("创建成功\n");
ssize_t res=0;
char buf[100];
while(1)
{
bzero(buf,sizeof(buf));
res=read(fd1,buf,sizeof(buf));
if(res==0)
{
break;
}
write(fd,buf,res);
}
if(close(fd)<0)
{
perror("close");
return -1;
}
printf("关闭成功");
return 0;
}