免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: greatho1507
打印 上一主题 下一主题

linux c 如何创建一定大小的文件? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-10-13 11:25 |只看该作者
迅雷是这样的;fseek不知道是否可以的??
关注。。。

论坛徽章:
0
12 [报告]
发表于 2008-10-13 11:30 |只看该作者
原帖由 熏红猴 于 2008-10-13 10:47 发表
要占空间不?
要不占空间
man truncate



迅雷的类似处理的临时文件不占用空间?

论坛徽章:
0
13 [报告]
发表于 2008-10-13 11:32 |只看该作者
如果这样呢?
创建一个空文件,用stat获取该文件信息,然后改变它的st_blocks.
这样可以吗?

论坛徽章:
0
14 [报告]
发表于 2008-10-13 11:57 |只看该作者
不能改变stat的信息。
dd 只知道如何copy文件但如何创建一个一定大小文件就不知道怎么做了。

论坛徽章:
0
15 [报告]
发表于 2008-10-13 13:15 |只看该作者
內存的話,我見過分配后通過在每頁開頭寫一個字節迫使內核給分配物理空間的情況
但是磁盤即使每隔一個扇區大小寫一個字節,估計也沒法提高效率。。。

论坛徽章:
0
16 [报告]
发表于 2008-10-13 13:20 |只看该作者
第一肯定要循环写

然后努力提高I/O写效率,速度应该能满足需要

论坛徽章:
0
17 [报告]
发表于 2008-10-13 15:11 |只看该作者
但迅雷创建一个G级别大小的临时文件也是瞬间完成的。如果循环写入的话,有可能这么快吗

论坛徽章:
0
18 [报告]
发表于 2008-10-13 15:36 |只看该作者
用system(" dd if=/dev/zero of=/tmp/file bs=1024 count=100000");
尝试,记录如下:
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 4.49476 seconds, 22.8 MB/s
如果是G级别的文件,不是要很久?

论坛徽章:
0
19 [报告]
发表于 2008-10-13 15:43 |只看该作者
我算了一下,用dd 1g的话也就用10秒,可以忍受吧

论坛徽章:
0
20 [报告]
发表于 2008-10-13 15:51 |只看该作者
10+0 records in
10+0 records out
1024000000 bytes (1.0 GB) copied, 16.8424 seconds, 60.8 MB/s

看来和硬件很大关系。。。。。。
如果在开发板上,那很令人抓狂的。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP