Ausgabe von C Programm erscheint nur unregelmäßig in einer Datei

Dieses Thema im Forum "Linux OS" wurde erstellt von Cruz, 16.05.2007.

  1. Cruz

    Cruz No Bullshit

    Dabei seit:
    30.08.2005
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    Bonn
    Hallo Leute,

    ich habe ein C Programm laufen, das mein System sehr stark auslastet. Es erstellt alle paar Minuten tausende von 128K Binärdateien, öffnet liest beschreibt und schliesst sie alle ein paar hundert mal und löscht sie dann alle wieder. Das klappt auch alles wunderbar.

    Gleichzeitig versuche ich den Erfolg des Programms in einer simpelen Textdatei zu loggen. Die Struktur des Programms ist simpel und sieht etwa so aus:

    FILE* logfile = fopen(einelogdatei, "a");
    while(1)
    {
    quaele_die_festplatte_bis_sie_verreckt();
    system("rm -f *");

    fprintf(logfile, "habe gerade %d tausend dateien erstellt und gelöscht", i);
    printf("habe gerade %d tausend dateien erstellt und gelöscht", i);
    }
    fclose(logfile);

    Die Ausgabe in die Logdatei hängt schwer hinterher. Ein Durchlauf der while Schleife dauert einige Minuten, sodass es noch nicht mal besonders viele Daten sind. Das Programm ist oft schon hunderte male durchgelaufen und ich kann die Ausgabe auf dem Bildschirm sehen, trotzdem steht keine einzige Zeile in der Logdatei! Und irgendwann erscheinen dann mal schubweise ein bis zwei Hundert Zeilen im Log, wobei man sehen kann, dass die letzte Zeile noch nicht vollständig geschrieben wurde. Das selbe Phänomen habe ich auf 3 unterschiedlichen Distros beobachtet: Ubuntu, SuSE und SystemRescueCD.

    Kann mich mal jemand erleuchten, wieso das so ist? Und kann ich irgendwas tun, damit ausnahmsweise mal die Logdatei zuverlässig geschrieben wird? Ich brauche unbedingt die Daten daraus und es dauert manchmal Stunden, bis endlich die ersten paar hundert Zeilen geschrieben werden.

    Vielen Dank,
    Cruz
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 BloodyMary, 17.05.2007
    BloodyMary

    BloodyMary Pornophon

    Dabei seit:
    15.03.2005
    Beiträge:
    615
    Zustimmungen:
    1
    Ort:
    Bayern
    also wenn es offensichtlich nicht am system liegt... dann gehört das wohl eher in den C++ Programmier Bereich
     
  4. #3 Lord Kefir, 17.05.2007
    Lord Kefir

    Lord Kefir König

    Dabei seit:
    10.06.2004
    Beiträge:
    944
    Zustimmungen:
    0
    Ist ja auch logisch: Du musst den Stream flushen oder das File schließen.

    Gruß,
    Lord Kefir
     
  5. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Dateien werden erst geschrieben, wenn das System meint, Zeit dazu zu haben. Wenn es gerade sehr beschaeftigt ist, wird das geschriebene erstmal im Hinterkopf (RAM) gehalten, bevor es seinen Weg auf die Platte findet.

    fflush(FILE*) ist die Funktion, die Du verwenden solltest, um Lord Kefirs Vorschlag zu folgen.
     
  6. #5 Lord Kefir, 18.05.2007
    Lord Kefir

    Lord Kefir König

    Dabei seit:
    10.06.2004
    Beiträge:
    944
    Zustimmungen:
    0
    Jedenfalls ist das bei durchdachten Systemen so ;)

    Gruß,
    Lord Kefir
     
  7. #6 rikola, 18.05.2007
    Zuletzt bearbeitet: 18.05.2007
    rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Na, wer denkt denn auch schon an Windows, wenn das Wort 'Betriebsystem' faellt ;-)
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Ausgabe von C Programm erscheint nur unregelmäßig in einer Datei

Die Seite wird geladen...

Ausgabe von C Programm erscheint nur unregelmäßig in einer Datei - Ähnliche Themen

  1. top oder prstat ausgabe für programm nutzen

    top oder prstat ausgabe für programm nutzen: Hallo zusammen, ich arbeite auf einer SUN Solaris Maschine. Ich würde gern die Ausgabe des Befehls prstat -t | grep <USER> für mein...
  2. Programmausgabe in anderes Programm umleiten

    Programmausgabe in anderes Programm umleiten: Hi @all, so ich bin nun so gut wie fertig mit meiner Facharbeit. Nur meine Beispielprogramme möchte ich noch "verschönern". Da mein Thema...
  3. Ausgabe von Programm => LED's steuern

    Ausgabe von Programm => LED's steuern: Hallo! Ich möcht mir gern ein kleines "Gerät" bauen, das aus insgesamt mal für den Anfang aus 2 LEDs besteht. Nun möchte ich unter Linux ein...
  4. Verschiedene Programmausgaben bzgl. Dateisystem?

    Verschiedene Programmausgaben bzgl. Dateisystem?: Hallo, [Edit: Ich hoffe, dieses Unterforum passt, sonst bitte verschieben ;)] ich habe gestern eine ("eBay"-)neue 640GB-Platte bekommen (ca....
  5. Maus wird schwammig bei Audioausgabeprogrammen

    Maus wird schwammig bei Audioausgabeprogrammen: OS: Ubuntu 5.10 i386 Maus: Logitech MX500 (an USB, ohne besondere Extratreiber) ------------ Hallo, Sobald ich mit meinem Mauszeiger über...