通过文件查找操作生成空文件的方法

通过文件查找操作生成空文件的方法

在文件操作期间,lseek操作可以移到文件中的任何位置。在UNIX文件操作中,文件位移可能大于文件的当前长度。
在这种情况下,对文件的下一次写入将扩展文件并在文件中形成孔,这是允许的。文件中尚未写入的字节全部设置为0。
如果offset大于文件的当前长度,则下一个写入操作将扩展文件。这称为在文件中创建孔。
实际未写入文件的所有字节均由重复的0表示。孔是否占据硬盘空间由文件系统确定。
中空锉刀效果很好。例如,Thunder下载文件时,在下载完成之前,该文件已经占用了文件大小的所有空间。
此时,它是一个空心文件。如果下载时没有空文件,则只能在多线程下载(不是多线程)期间从一个位置写入文件。
如果存在空心文件,则可以从其他地址写入该文件,并完成多线程优势任务。接下来,让我们实现一个案例,即创建一个1GB的空文件:#include& lt; sys / types.h& gt; #include& lt; sys / stat.h& gt; #include < fcntl.h& gt; #include& lt; unistd .h& gt; #include& lt; stdio.h& gt; int main(void){int fd; off_t偏移量; & nbsp;& nbsp; //创建具有可读,可写和可执行权限的文件“ tmp”。
fd = creat(“ tmp”,0777); if(-1 == fd)//如果发生错误,则返回-1 {perror(“ creat”); return -1;} //将偏移量设置为1024ll * 1024ll * 1024ll,并偏移到最后文件偏移量= lseek(fd,1024ll * 1024ll * 1024ll,SEEK_END); printf(“偏移量=%d ”,“ offset”); //将其写入空,将1个字节写入文件描述符write(fd,“'',, 1); //关闭文件描述符close(fd);返回0;}运行结果:如果您认为本次共享的文章对您有所帮助,请单击[查找]并转发并共享,这也对我表示支持。

深圳市相信过程科技有限公司❤李经理❤欢迎您的咨询