C 如何使用open()而不是fopen()判断文本文件是否为空
如果可以使用fopen,那么解决方案很简单:C 如何使用open()而不是fopen()判断文本文件是否为空,c,linux,fopen,C,Linux,Fopen,如果可以使用fopen,那么解决方案很简单: FILE *fp; fp = fopen(path, "r"); fseek (fp, 0, SEEK_END); size = ftell(fp); 如果大小为零,则文件为空 但是,如果要求不能使用fopen,该怎么办。相反,我必须使用系统调用,如open: int f = open(path, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR ); ftell只能与文件类型流一起使用。我在谷歌上搜索了一下,找不到任何解
FILE *fp;
fp = fopen(path, "r");
fseek (fp, 0, SEEK_END);
size = ftell(fp);
如果大小为零,则文件为空
但是,如果要求不能使用fopen,该怎么办。相反,我必须使用系统调用,如open:
int f = open(path, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR );
ftell只能与文件类型流一起使用。我在谷歌上搜索了一下,找不到任何解决方案 这不是一个标准C不知道的C问题,而是一个Linux或POSIX问题 您不一定需要,而且您应该意识到,在Linux上,其他一些进程可以写入您打开的文件 然后,您可以使用with.st_size字段获取文件的大小,也可以使用fstat获取打开的文件描述符的大小 您还可以使用它来设置和查询打开的文件描述符的当前文件偏移量。您可以使用系统调用stat。查看stat结构的st_size成员以获取大小(字节)。