Problem mit opendir()



  • Hi Leute,
    hab nur ne kurze frage:

    warum gibt opendir() keinen Fehler zurück wenn ich ihn als Parameter "."e geben?
    z.B. wenn ich schreib

    folder = opendir(".........."); // Punktlänge egal
    

    Das Verzeichnis gibts ja ned.

    Danke schon mal
    MFG Ich



  • Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Tut es doch. opendir gibt in diesem Fall NULL zurück und setzt errno, wie es bei C-Funktionen so üblich ist.



  • Erst mal sorry wegen falschem Forum hab aber unter der Suche vieles über opendir() bei "Ansi C" gefunden und hab deswegen gedacht das das der richtige Bereich ist 🤡.

    Hier mal mein Bsp.:

    int main(int argc, char *argv[])
    {
    
        DIR* folder;
    
        folder = opendir(".........................");
    
        if(folder != NULL)
            printf("Komisch\n");
    
    	perror(NULL);
    
    	return 0;
    }
    

    wenn ich das jetzt ausführe schreibt er "Komisch" und "No error" auf dem Bildschirm??
    Also scheint es ja zu funktionieren!?

    Kann das sein weil ich Windows benutze, dass das geht?
    2. Grund warum ich ned in dem Forum gepostet hab ;).

    MFG Ich



  • Überprüf doch mal mit readdir(), in welchem Verzeichnis du dann bist?
    Vielleicht werden die Punkte als '.' (selbes Verzeichnis) oder '..' (Parent-Verzeichnis) gelesen bzw. einfach ignoriert.
    Unter der Eingabeaufforderung kommt jedenfalls ein Fehler bei "dir ....".



  • Hm, ich kann das nicht nachvollziehen:

    nman ~ % cat foo.c
    #include <sys/types.h>
    #include <dirent.h>
    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
    
      DIR* folder;
    
      folder = opendir(".........................");
    
      if(folder != NULL)
        printf("Komisch\n");
    
      perror(NULL);
    
      return 0;
    } 
    nman ~ % gcc -o foo foo.c 
    nman ~ % ./foo 
    No such file or directory
    nman ~ %
    


  • Th schrieb:

    Überprüf doch mal mit readdir(), in welchem Verzeichnis du dann bist?

    Ja, gute Idee, mach sowas in der Art:

    struct dirent* de = readdir(folder);
    
      if(folder != NULL)
        { 
          printf("Komisch\n");
          printf("%s", de->d_name);
        }
      else
        perror(NULL);
    

Anmelden zum Antworten