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 + -
显示快捷键?