用read函数完成文件大小计算
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<head.h>
int main(int argc, const char *argv[])
{
int fd=open("./2023-07-31 14-54-17 的屏幕截图.png",O_RDONLY);
if(fd<0)
{
ERR_MSG("open");
return -1;
}
char buf[1]="";
int count=0;
ssize_t res;
while(1)
{
bzero(buf,sizeof(buf));
res=read(fd,buf,sizeof(buf));
if(0==res)
break;
count++;
}
printf("%d\n",count);
close(fd);
return 0;
}
文件权限提取循环方式
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<head.h>
void get_filePrmission(mode_t m)
{
int a=0400;
while(a)
{
if((m&a)!=0)
putchar('r');
else
putchar('-');
a=a>>1;
if((m&a)!=0)
putchar('w');
else
putchar('-');
a=a>>1;
if((m&a)!=0)
putchar('x');
else
putchar('-');
a=a>>1;
}
return;
}
int main(int argc, const char *argv[])
{
struct stat buf;
if(stat("./1.txt",&buf)<0)
{
ERR_MSG("stat");
return -1;
}
printf("mode :0%o\n",buf.st_mode);
get_filePrmission(buf.st_mode);
printf("link: %ld\n",buf.st_nlink);
printf("uid: %d\n",buf.st_uid);
printf("gid: %d\n",buf.st_gid);
printf("size: %ld\n",buf.st_size);
printf("time: %ld\n",buf.st_ctime);
return 0;
}