Datei Status



  • hallo zusammen,
    ich hab da mal ne kleine Frage an euch, wäre euch super dankbar wenn ihr mir weiterhelfen könntet.

    Wie kann ich mit C unter Linux überprüfen ob ich es bereits geöffnet haben.

    Also kurz zur Erklärung:
    Ich habe mehrere Funktionen.
    In einer Funktion öffnet ich ein file mit fopen und weise es einem static FILE*
    zu.Wie kann ich jetzt beim erneuten eintreten in diese Funktion überbrüfen, ob das file noch existiert, d.h. ob es noch offen ist etc.

    Vielen Dank im Voraus
    Nobbi



  • In einer Funktion öffnet ich ein file mit fopen und weise es einem static FILE*
    zu.Wie kann ich jetzt beim erneuten eintreten in diese Funktion überbrüfen, ob das file noch existiert, d.h. ob es noch offen ist etc.

    Wie wäre is mit einem weiterer static Variable is_open oder so, das du nach fopen nonzero setzt?

    mfg



  • Einfach mal überprüfen ob

    FILE == NULL
    

    ?

    -elvis



  • eventuell geht auch "fileno(3)" das eigentlich den filedescriptor
    eines gültiges FILE zurückgibt oder -1 wenns kein gültiges, also
    eventuell geschlossenes ist. bin mir da aber nicht so ganz sicher.



  • @Norb,

    schließe doch einfach die Datei mit fclose.
    Wenn das schließen erfolgreich war, war die Datei offen.
    Mit einem fopen kannst du anschließend testen
    ob die Datei noch existiert.

    Bye Peter.



  • ___Peter schrieb:

    @Norb,

    schließe doch einfach die Datei mit fclose.
    Wenn das schließen erfolgreich war, war die Datei offen.
    Mit einem fopen kannst du anschließend testen
    ob die Datei noch existiert.

    Bye Peter.

    Jo so mach ich das ja auch gerade. Aber ich wollte mal aus optimationstechnischen gründen schauen ob es schneller is ein file neu zu parsen im dem ich ein fseek an den Anfang der Datei mache. DA ich die Datei ca. jede sec neu parse wollt ich das File mal offen lassen und dann mal schauen ob es schneller is, also immer schliessen und neu öffnen. (Man kann das bei Dateien aus /proc so machen)



  • // Datei öffnen
    FILE* Datei = fopen("dateiname","r");
    while (1) {
    // Zurückspulen
    fseek(Datei,0,SEEK_SET);
    parse(Datei);
    }
    fclose(Datei);
    

    Tipp: DAtei öffnen ab wann sie gebraucht wird (nicht in der Schleife oder funktion selber) und schliessen wenn die parsevorgänge abgeschlossen sind. Ich hab oben einfach angenommen du machst das irgendwie mit ned while-schleife.

    http://www.thinkage.ca/english/gcos/expl/c/lib/fseek.html

    -elvis


Anmelden zum Antworten