第3天 IO

用read函数计算文件的大小

#include
#include
#include
#include

int main(int argc, const char *argv[])
{
	int fd=open("./2.txt",O_RDONLY);
	if(fd < 0)
	{
		ERR_MSG("open");
		return -1;
	}

/*	off_t size = lseek(fd,0,SEEK_END);
	printf("size = %ld\n",size);*/
	char a[128]="";
	ssize_t count=0;
	ssize_t res=0;
	while(1)
	{
		bzero(a,sizeof(a));
		res = read(fd,a,sizeof(a));
		if(0 == res)
			break;
		count+=res;
	}
	printf("count =%ld\n",count);
	return 0;
}

获取文件的权限

#include
#include
#include
#include
#include
void get_filePermission(mode_t m)
{
	for(int i=0;i<9;i++)
	{
		if(i==0||i==3||i==6)
		{
		if((m & (0400>>i)) != 0)
			putchar('r');
		else
			putchar('-');
		}		
		if(i==1||i==4||i==7)
		{
		if((m & (0400>>i)) != 0)
			putchar('w');
		else
			putchar('-');
		}
     	if(i==2||i==5||i==8)
		{
		if((m & (0400>>i)) != 0)
			putchar('x');
		else
			putchar('-');
		}
	}
}
int main(int argc, const char *argv[])
{
	struct stat buf;
	if(stat("./2.txt",&buf)<0)
	{
		ERR_MSG("stat");
		return -1;
	}
	//文件的类型和权限
	printf("mode:0%o\n",buf.st_mode);
	get_filePermission(buf.st_mode);

	//文件的硬链接数
	printf("   %ld",buf.st_nlink);

	//文件的所属用户
	printf("   %d",buf.st_uid);

	//文件所属组用户
	printf("  %d",buf.st_gid);

	//文件大小
	printf("  %ld",buf.st_size);

	//文件的修改时间
	struct tm* info=localtime(&buf.st_ctime);
    printf("   %d-%02d-%02d  %02d:%02d:%02d",\
				info->tm_year+1900,info->tm_mon+1,info->tm_mday,\
				info->tm_hour,info->tm_min,info->tm_sec);
	
	return 0;
}

 

你可能感兴趣的:(linux,服务器,算法)