C Viele Dateien mit zufälligem Inhalt

wedge47

Cadet 3rd Year
Registriert
Aug. 2005
Beiträge
55
Hallo leider bekomme ich bei folgendem Code einen Segmentation Fault. Ich seh leider den fehler nicht.

Was will ich:
Es sollen so schnell wie möglich eine große Anzahl von Dateien mit zufälligem Inhalt erstellt werden.

Spätere Erweiterungen:
  • zufällige Dateigröße
  • verschiedene Benutzer

thx for help

PHP:
#include <stdio.h>
#include <stdlib.h>

#define FILECOUNT 100
#define PATH "out/"
#define FILENAME "file"

int main(void)
{
  char filename[20];
  int i;
  FILE *newfile;
  FILE *random;
  char *buffer;
  int n;

  /* open /dev/random for grabbing random content */
  if((random = fopen("/dev/random", "r")) == NULL)
  {
    printf("failed to open /dev/random.\n");
    exit(1);
  }

  /* create files with random content */
  for (i=0; i<FILECOUNT; i++)
  {
    sprintf(filename, "%s%s%d", PATH, FILENAME,  i);    //concat path to file and add counter

    if((newfile = fopen(filename, "w")) == NULL)      //create new file
    {
      printf("failed to create %s.\n", filename);
      exit(1);
    }

    n = fread(buffer, 1, 1000, random);        //read random input
    fwrite(buffer, 1, n, newfile);     //write random input to new file
    fclose(newfile);
    printf("%s\n",filename);           //print processed filename
  }
  fclose(random);
  return 0;
}
 
kommt überhaupt keine printf ausgabe?

schonmal probiert, testweise mit einem printf den fehler zu lokalisieren?
(also fehlercode ausgabe vom programm selbst)
 
Raechaer schrieb:
Du scheinst für buffer keinen Speicher zu reservieren.
wie müsste das aussehen?

ManOki schrieb:
kommt überhaupt keine printf ausgabe?
nein gar nix
hab mal ein printf direkt als erstes in die main() gepackt und selbst das kommt nicht. Irgendwas mit der Variablendeklaratin falsch?
 
ok das funktioniert, leider bin ich von der geschwindigkeit entäucht. Hatte das ganze vorneweg mit einem shell script und dd gemacht und das war m.E. nach schneller. komisch.

*edit*
ich stelle gerade fest das das auslesen des /dev/random die Bremse ist. Wenn ich den Buffer einfach mit 1000 Nullen fülle und quasi in jede Datei das gleiche schreibe dann geht es rasent schnell.
Gäbe es ne schnellere Variante random Daten zu bekommen?
Wenn ich es mir recht überlege ist es eigentlich auch egal was in den Dateien steht. Viel wichtiger wäre das sie unterschiedlich groß sind. Da werd ich mich wohl jetzt mal dran machen.
 
Zuletzt bearbeitet:
Zurück
Oben