如何用纯c或linux-shell或dos命令创建一个超级大的文件?

发布于 2024-08-13 09:41:19 字数 259 浏览 5 评论 0原文

我的操作系统和驱动器是

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的文件 所以... 我们将不胜感激您的热情回应 谢谢

My os and drive is

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

So, How can I create a super-huge file in secs

I was told to use MappingFile functions. I failed to create files over 2G
So...
Your warm responses will be all appreciated
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

眼眸里的快感 2024-08-20 09:41:19

在 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
$

Using dd in Linux to create a 1 gb file takes 57 seconds 'wall clock time' on a somewhat loaded box with a slow disk, and about 17 seconds system time:

$ 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
$
温柔一刀 2024-08-20 09:41:19

你可以使用 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

you can use dd

dd if=/dev/zero of=bigfile.txt bs=$((1024*1024)) count=100

or just plain shell scripting and contents doesn't matter

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

Do another time

while true
do
  cat bigfile >> bigfile2.txt           
  # check for size and break out..
done
rm -f dummy bigfile
蒗幽 2024-08-20 09:41:19

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

dd if=/dev/zero of=bigfile seek=7T bs=1 count=1

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

在 Cygwin 或 Linux 下编写程序,您可以通过调用 ftruncate

Does the file have to take up actual disk space? If not, you could always (in Cygwin, or Linux):

dd if=/dev/zero of=bigfile seek=7T bs=1 count=1

This will create an empty 7 TB file in a fraction of a second. Of course, it won't allocate much actual disk space: You'll have a big sparse file.

Writing a program under Cygwin or Linux, you can do the same thing in a C program with a call to ftruncate.

娇柔作态 2024-08-20 09:41:19

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

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

玩一下。

Depending on your system limits you can create a largefile in a fraction of a second...

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

Play with this.

寒尘 2024-08-20 09:41:19

猫 /dev/urandom>> /home/mybigfile

当磁盘空间耗尽时会出错。

这是针对 linux/bsd/可能是 cgywin

cat /dev/urandom >> /home/mybigfile

It will error out when disc space has ran out.

This is for linux/bsd/possibly cgywin

默嘫て 2024-08-20 09:41:19

在 VM 中的 suse 中,我执行了 dd if=/dev/zero of=file;rm file ,它填满了磁盘,当磁盘满时删除了该文件。这使我能够出于某种原因进一步压缩图像,并且我在某个论坛上读到了有关这样做的信息。

In suse in a VM I did dd if=/dev/zero of=file;rm file which filled the disk, and when it was full deleted the file. This allowed me to compress the image a little more for some reason, and I read about doing it on a forum somewhere.

苏大泽ㄣ 2024-08-20 09:41:19

对于Win2000/XP/7,您可以使用“fsutil”命令:

c:> fsutil 文件创建新
用法:fsutil 文件创建新
例如:fsutil file createnew C:\testfile.txt 1000

Reagrds

You can use "fsutil" command for Win2000/XP/7:

c:> fsutil file createnew
Usage : fsutil file createnew
Eg : fsutil file createnew C:\testfile.txt 1000

Reagrds

浮云落日 2024-08-20 09:41:19

如果您想要一个稀疏文件,您也可以在 Windows 上(在 NTFS 卷上)使用 CreateFile、DeviceIOFunction 以及 FSCTL_SET_SPARSE 和 FSCTL_SET_ZERO_DATA 来实现;有关详细信息,请参阅此处

If you want a sparse file you can do that also on Windows (on NTFS volumes), using CreateFile, DeviceIOFunction with FSCTL_SET_SPARSE and FSCTL_SET_ZERO_DATA; for more info see here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文