[personal profile] zinal
Налабал вот по необходимости программулину, которая обнуляет свободное место на диске.
Полезно для сжатия образов дисков виртуальных машин (как минимум VMWare, VirtualBox
и - мой случай - Xen поверх sparse-файлов).

До этого пользовался под Линухом dd, а под Виндами штуковиной по имени nullfile, но
вот понадобилось сделать типичную операцию по 64-битными виднами, и облом,
поскольку nullfile - программа под MSDOS, а NTVDM из состава Windows Server 2003 x64
Microsoft наконец-таки изжил.

Текст:
#include <string.h>
#include <stdio.h>
#include <unistd.h>

#ifdef WIN32
#include <windows.h>
#endif

#define FNAME "zerodisk.dat"

int main()
{
int i, j;
char buf[16384];
FILE* f = fopen(FNAME, "wb");
if ( f==NULL ) {
perror("Cannot create temporary file " FNAME);
return 1;
}
memset(buf, 0, sizeof(buf));

i = 0; j = 0;
while (1) {
if ( fwrite(buf, sizeof(buf), 1, f) != 1 )
break;
fflush(f);

if ( ++i == 640 ) {
fclose(f);
f = fopen(FNAME, "ab");
if ( f==NULL ) {
perror("Cannot re-open temporary file " FNAME);
return 1;
}

fputc('.', stdout);
fflush(stdout);
i = 0;
if ( ++j == 10 ) {
fputc('|', stdout);
fflush(stdout);
j = 0;
#ifdef WIN32
Sleep(1000);
#else
sleep(1);
#endif
}
}
}

fclose(f);
unlink(FNAME);
printf("\n");
return 0;
}

Profile

zinal: (Default)
Maksim Zinal

April 2017

M T W T F S S
     12
3456 789
10111213141516
17181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 27th, 2025 09:15 pm
Powered by Dreamwidth Studios