getsize.c

来自「for 6441A update unix get the file si」· C语言 代码 · 共 102 行

C
102
字号
#include <stdio.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <fcntl.h>#include <sys/types.h>#include <stdlib.h>#define FILENAME "/media/hdc1/testbig"#define FILENAMEOPEN "/media/hdc1/test"#define STATUS int#define KB 1000#define MB 1000*KB#define GB 1000*MB#define E_PASS 0#define E_RESOURCE_UNAVAILABLE (-200)#define READBUFLEN 30*KBSTATUS JugeFileMaxSize(const char *path, long maxsize);int main(int argc, char *argv[]){		long fd,fdbig;	struct stat FileInfo;	char readbuf[READBUFLEN];	int i=0;	int insize=0;	int len=0;	int readlen=0;		int ret=0;	if(argc > 1){		insize = atoi(argv[1]);		if(insize > 4000){			printf("insize error,must be <4000\n");			return 0;		}	}		fd = open(FILENAMEOPEN,O_RDONLY);      if(fd < 0){                printf("open %s >>error!\n",FILENAMEOPEN);		return 0;      }		fdbig = open(FILENAME,O_RDWR|O_CREAT|O_TRUNC);	if(fdbig < 0){		printf("open %s >>error!\n",FILENAME);		close(fd);		return 0;	}	while(1){		readlen =read(fd,readbuf,READBUFLEN);		if(readlen < 0){			close(fd);			close(fdbig);			return 0;		}		if(readlen == 0){			lseek(fd, 0, SEEK_SET);		}		len = write(fdbig,readbuf,readlen);				ret = JugeFileMaxSize(FILENAME,insize*MB);		if(ret == E_RESOURCE_UNAVAILABLE){				close(fd);			close(fdbig);			break;		}			}	return 0;}// 判断文件大小, 如果大小超过了最大值就返回E_RESOURCE_UNAVAILABLE// path:文件路径//maxsize: 该文件最大值STATUS JugeFileMaxSize(const char *path, long maxsize){	struct stat FileInfo;		stat(FILENAME,&FileInfo);					if(FileInfo.st_size > maxsize){							printf("\nsize is up\n");		printf("FileSize = %d\n",FileInfo.st_size);			return E_RESOURCE_UNAVAILABLE;	}	return E_PASS;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?