1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Dateien umbenennen

Discussion in 'Programmieren' started by mvp, Feb 22, 2004.

Thread Status:
Not open for further replies.
  1. mvp

    mvp ROM

    Ich habe eine Frage

    Ich programmiere in C (noch) mit gcc (gnu c compiler) und habe eine Frage.

    Ich weiss nicht, wie man Dateien effizient umbenennen kann. Ich weiss, dass es eine Funktion rename gibt, aber da ich den Quelltext dieser Funktion angesehen habe, weiss ich, dass diese Funktion die alte Datei zuerst kopiert und dann die alte Datei löscht; was bei grossen Dateien ziemlich ineffizient ist.

    Weiss jemand, wie man mithilfe irgendeiner io-funktion den Dateinamen direkt ändern kann?
     
  2. it-praktikant

    it-praktikant Megabyte

    Hallo,

    prinzipiell würde ich dir raten, doch an execl zu halten. Das hat folgenden Grund:
    - du kannst dir sicher sein, dass du nicht nur deinen Pointer umbenannt hast
    - deine Lösung berücksichtigt die Schreibrechte des Systems und liefert dir auf jeden Fall sinnvolle Fehlermeldungen
    - Du musst deine Programmstruktur wahrscheinlich nicht ändern, wenn du dein programm von einem auf das nächste System überträgst.

    Ciao it.
     
  3. mvp

    mvp ROM

    Ja, danke für den Hinweis

    Das Problem ist allerdings, dass das umbenennen von Windows auch nicht schneller ist; eher noch langsamer.

    Eigentlich ist das Problem so: Wenn nur wenige Dateien im Verzeichnis sind, arbeitet rename() sehr schnell. Wenn aber allerdings etwa 2000 Dateien im Verzeichnis sind, arbeitet es sehr träge? Ist das systembedingt so oder gibt es eine andere Lösung?
     
  4. it-praktikant

    it-praktikant Megabyte

    Morgen,

    du könntest mithilfe von execl oder ähnliche die systemeigene Umbenennungsfunktion aufrufen.

    Aber Achtung: execl kehrt nicht zurück, also erst mit fork einen neuen Kindsprozess erstellen und auf den waretn.

    Ciao it.
     
Thread Status:
Not open for further replies.

Share This Page