ofstream, datei trotz laufendem programm umbenennen



  • Hi,

    hätte ein kleines Anliegen. Und zwar schreibe ich die Ausgabe eines Konsolenprogrammes per ofstream in eine txt datei.

    nun möchte ich wenn die txt datei zu groß wird diese umbennen -ohne- das laufende programm zu unterbrechen. wenn das programm läuft kann ich diese aber nicht umbennen, da diese in benutzung ist..

    gibt es eine möglichkeit den exklusiven zugriff durch ofstream aufzuheben?

    in der doku finde ich hierzu leider nichts ://

    alternativ könnte ich ja falls die datei eine gewisse größe überschreitet automatisch splitten... aber ein manuelles umbennenn ist mir lieber 🙂


  • Mod

    Datei schließen, umbenennen, umbenannte Datei öffnen.



  • gut, das muss dann aber auch zu einem bestimmten zeitpunkt passieren. d.h. ich kann nicht einfach während das programm läuft die datei umbenennen...

    habs jetzt vorerst so gelöst das ich die datei nach x mbyte neu anlege..


  • Mod

    taurus schrieb:

    gut, das muss dann aber auch zu einem bestimmten zeitpunkt passieren. d.h. ich kann nicht einfach während das programm läuft die datei umbenennen...

    Verstehe ich nicht.

    habs jetzt vorerst so gelöst das ich die datei nach x mbyte neu anlege..

    Gut, wenn du eine Lösung hast, hat sich das mit dem Umbenennen ja erledigt.



  • nun mit deinem beispiel müsste ich das umbennen ja direkt im programm vornehmen... ich wollte das ich von außerhalb in der windows oberfläche die datei umbennenen kann in z.b. log_old... und das programm dann automatisch wieder eine neue log.txt erstellt..

    verstanden? 😉

    aber wie gesagt... ich hab das jetzt so gelöst das er mir immer eine neue datei schreibt sofern die alte einen gewissen wert übersteigt.

    trotzdem danke 🙂



  • taurus schrieb:

    nun mit deinem beispiel müsste ich das umbennen ja direkt im programm vornehmen... ich wollte das ich von außerhalb in der windows oberfläche die datei umbennenen kann in z.b. log_old... und das programm dann automatisch wieder eine neue log.txt erstellt..

    verstanden? 😉

    aber wie gesagt... ich hab das jetzt so gelöst das er mir immer eine neue datei schreibt sofern die alte einen gewissen wert übersteigt.

    trotzdem danke 🙂

    Du willst die Datei also von Hand umbenennen, nicht per Programm? Dann wäre das wohl eher eine Frage für Themen rund um den PC oder ein ähnliches Forum.
    Tatsache ist, dass du das mit dem Windows Explorer wahrscheinlich nicht kannst.
    Da müsstest du schon einen Explorer nehmen, der Handles automatisch schließen kann, was dann aber dein Logging unterbinden würde.


  • Mod

    taurus schrieb:

    nun mit deinem beispiel müsste ich das umbennen ja direkt im programm vornehmen... ich wollte das ich von außerhalb in der windows oberfläche die datei umbennenen kann in z.b. log_old... und das programm dann automatisch wieder eine neue log.txt erstellt..

    verstanden? 😉

    Ach so, jetzt verstehe ich. Ich dachte das Programm soll das automatisch machen. Nein, das geht tatsächlich nicht, zumindest nicht sauber. Man könnte in einer Schreibpause des Programms vielleicht von außen eingreifen, aber da muss das Timing stimmen. Das Programm sollte sich selber um solche Dinge kümmern, also ist das was du jetzt hast eine gute Lösung.



  • mhh.. wir haben bei uns in der firma aber ein programm laufen das auch logfiles schreibt... und diese kann man ganz easy umbennen...

    ok EDIT: das muss es wohl so sein das das log file nach dem schreibvorgang geschlossen wird und man das deshalb umbennen kann...

    naja.. belass ich es dabei und splitte die datei wie gehabt...

    dank euch beiden


Anmelden zum Antworten