Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何使用纯c或linux shell或dos命令创建超大型文件?_Windows_Linux_Createfile - Fatal编程技术网

Windows 如何使用纯c或linux shell或dos命令创建超大型文件?

Windows 如何使用纯c或linux shell或dos命令创建超大型文件?,windows,linux,createfile,Windows,Linux,Createfile,我的操作系统和驱动器是 OS: Windows XP sp2 or Linux SUSE 9 or Cygwin Compiler: Visual C++ 2003 or Gcc or Cygwin PC and os are both 32 bits 那么,如何在几秒钟内创建一个超大文件呢 我被告知使用MappingFile函数。我无法创建超过2G的文件 所以 我们将非常感谢您的热情回复 谢谢您可以使用dd dd if=/dev/zero of=bigfile.txt bs=$((1024*

我的操作系统和驱动器是

OS: Windows XP sp2 or Linux SUSE 9 or Cygwin
Compiler: Visual C++ 2003 or Gcc or Cygwin
PC and os are both 32 bits
那么,如何在几秒钟内创建一个超大文件呢

我被告知使用MappingFile函数。我无法创建超过2G的文件 所以 我们将非常感谢您的热情回复 谢谢

您可以使用dd

dd if=/dev/zero of=bigfile.txt bs=$((1024*1024)) count=100
或者只是简单的shell脚本和内容并不重要

1) create a dummy file with a few lines, eg 10 lines
2) use cat dummy >> bigfile in a while loop

eg

    while true
    do
      cat dummy >> bigfile.txt 
      #check for number of lines more than 10000 for example and break out of loop
    done
改天

while true
do
  cat bigfile >> bigfile2.txt           
  # check for size and break out..
done
rm -f dummy bigfile

在Linux中使用
dd
创建1 gb文件需要57秒的“挂钟时间”,在一个加载缓慢的磁盘盒上,大约需要17秒的系统时间:

$ time dd if=/dev/zero of=bigfile bs=G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 53.9903 s, 19.9 MB/s

real    0m56.685s
user    0m0.008s
sys     0m17.113s
$

文件是否必须占用实际磁盘空间?如果不是,您可以(在Cygwin或Linux中):

这将在几分之一秒内创建一个7 TB的空文件。当然,它不会分配太多实际的磁盘空间:您将有一个大的磁盘空间


在Cygwin或Linux下编写程序,您可以在C程序中通过调用来执行相同的操作。

根据您的系统限制,您可以在几分之一秒内创建一个较大的文件

FILE *fp = fopen("largefile" ,"w");
for(int i = 0; i < 102400; i++)
{
    fseek(fp, 10240000, SEEK_CUR);
}
fprintf(fp, "%c", 'x');
fclose(fp);
FILE*fp=fopen(“大文件”,“w”);
对于(int i=0;i<102400;i++)
{
fseek(fp,10240000,SEEK_CUR);
}
fprintf(fp,'%c','x');
fclose(fp);

玩这个。

/cat/dev/uradom>/home/mybigfile

当磁盘空间用完时,它将出错


这是针对suse中的linux/bsd/可能是cgywin

在一个vmi did
ddif=/dev/zero of=文件中;rm文件
,它填充了磁盘,并且在磁盘已满时删除了该文件。出于某种原因,这使我能够对图像进行更多的压缩,我在某个论坛上读到过这样做的消息。

如果你想要一个稀疏文件,你也可以在Windows(NTFS卷)上使用CreateFile、DeviceOfnction和FSCTL\u SET\u sparse和FSCTL\u SET\u ZERO\u数据进行压缩;有关更多信息,请参见。

您可以在Win2000/XP/7中使用“fsutil”命令:

c:>fsutilfile createnew 用法:fsutil文件createnew 例如:fsutil文件createnew C:\testfile.txt 1000


Reagrds

内容是什么重要吗?我的意思是,你想做什么?只是在磁盘上阻塞空间?你能不能更详细地描述一下超大容量,并描述一下内容
/dev/zero
可能比
/dev/random
更快,并且更容易处理任何消耗文件的内容。同意,/dev/random可以阻止,如果需要psuedo随机内容,最好使用/dev/uradom。无法快速找到一个好的手册页。在Linux中,调用大于文件大小的ftruncate总是扩展文件的大小。非常确定Cygwin坚持这一点。即使它没有,使用一对
fseek(巨大)
fwrite(一个字节)
也很容易实现同样的目标。你需要确保Cygwin首先安装了稀疏支持的文件系统-这会有点耗时吗?
FILE *fp = fopen("largefile" ,"w");
for(int i = 0; i < 102400; i++)
{
    fseek(fp, 10240000, SEEK_CUR);
}
fprintf(fp, "%c", 'x');
fclose(fp);