您的位置:首页 > 运维架构 > Linux

文件操作——linux快速创建大文件的方法

2016-10-22 20:14 351 查看
还记得去年在准备某公司的笔试时遇到了一道题目,题目中要求”快速创建1G的大文件“,后面的要求这里暂且就省略了。如何快速创建指定大小的大文件呢?可能有很多种办法,这里提供两种办法。

1、利用dd命令操作创建文件

//结合C语言,可以使用system函数调用shell命令
char *shell = "dd if=/dev/zero of=test.txt bs=1K count=1024";
system(shell);


其中 if=输入的文件,of=输出文件,bs=块大小 ,count=块数量。

bs和count的单位设置,man函数中提及如下,查看完整参数请参见Manuel手册:

BLOCKS  and  BYTES may be followed by the following multiplicative
suf‐fixes: c =1, w =2,  b  =512,  kB  =1000,  K  =1024,
MB  =1000*1000,  M=1024*1024,  xM =M GB =1000*1000*1000,
G=1024*1024*1024, and so on for T, P, E, Z, Y.


2、利用文件操作的文件指针移位产生空洞文件

这里指的是将文件指针移动到距离文件头指定大小的地方,再进行写操作(注意,这里移动完文件位移量后一定要写点东西,否则无效)

int main(void)
{
int fd ;
fd = open("test.txt" , O_CREAT|O_RDWR , 0777);

if( fd < 0)
{
printf("open file error\n");
return 0;
}

//为了创建一个大小为3M的文件,我们先少创建2个字节,然后在写文件的时候补充2字节
lseek(fd , 1024 * 1024 *3 -2, L_SET);
write(fd , "e" , 1);
close(fd);

return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 linux
相关文章推荐