<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[readdir (Linux): Segmentation Fault]]></title><description><![CDATA[<p>Ich arbeite an einem kleinen Codeschnippsel der alle Unterverzeichnisse incl. Dateien eines Verzeichnisses (in diesem Fall das momentan Ausführungsverzeichnis) in Datei schreiben soll.</p>
<p>Zunächst werden die nächstgelegenen Unterverzeichnisse/Dateien ermittelt und in die Datei geschrieben, dann wird zurück an den Anfang der Datei gesprungen und die Hauptschleife beginnt, bei der es scheinbar hakt:</p>
<pre><code>while(!feof(list))
    {
        memset(currentDir, 0, sizeof(currentDir));
        fgets(currentDir, sizeof(currentDir), list);  // Pfad aus Datei lesen

        if(currentDir[0] != '4')   // Wenn es sich nicht um ein Verzeichnis
            continue;              // handelt, nächster Durchlauf

        currentDir[0] = 0;         // Pfad in gültiges Format für opendir
        currentDir[strlen(currentDir)-1] = 0;           // bringen
        for(int i = 0; i &lt; sizeof(currentDir); i++)
            currentDir[i] = currentDir[i+1];

        directory = opendir(currentDir);   // Pfad öffnen
        position = ftell(list);          //momentane Position in Datei merken
        fseek(list, 0, SEEK_END);       // Ans Datei Ende springen
        while((dirInfo = readdir(directory))!=0)   // Bis alle
        {                                         //Unterverzeichnisse
                                                   // gefunden wurden

            if(dirInfo-&gt;d_name[0] == '.')   // Falls es &quot;..&quot; oder &quot;.&quot; ist  
                continue;                    // überspringen

            memset(subDir, 0 , sizeof(subDir));   // Pfad
            strcpy(subDir, currentDir);         // des gefundenen 
            strcat(subDir, &quot;/&quot;);                 // Verzeichnisses
            strcat(subDir, dirInfo-&gt;d_name);    // in Datei schreiben.
            fprintf(list, &quot;%s\n&quot;, subDir);
        }
        closedir(directory);
        fseek(list, position, SEEK_SET);
    }
</code></pre>
<p>So sieht die Datei aus, auf die list zeigt.</p>
<pre><code>8./USB encrypter.o
4./rktjkejf
8./USB encrypter.cpp.cbTemp
8./sglkpw#stkf,#üqpkh w
8./type.cpp
8./USB encrypter
8./USB encrypter.cpp
4./test
4./asdasdasd
8./funcs.h
8./asyd
4./sd
8./type.o
8./type
8./list
</code></pre>
<p>Die Zahl vor dem Pfad ist jeweils der Dateityp (Verzeichnis = 4)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280646/readdir-linux-segmentation-fault</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 01:11:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280646.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Jan 2011 21:42:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to readdir (Linux): Segmentation Fault on Tue, 18 Jan 2011 21:42:31 GMT]]></title><description><![CDATA[<p>Ich arbeite an einem kleinen Codeschnippsel der alle Unterverzeichnisse incl. Dateien eines Verzeichnisses (in diesem Fall das momentan Ausführungsverzeichnis) in Datei schreiben soll.</p>
<p>Zunächst werden die nächstgelegenen Unterverzeichnisse/Dateien ermittelt und in die Datei geschrieben, dann wird zurück an den Anfang der Datei gesprungen und die Hauptschleife beginnt, bei der es scheinbar hakt:</p>
<pre><code>while(!feof(list))
    {
        memset(currentDir, 0, sizeof(currentDir));
        fgets(currentDir, sizeof(currentDir), list);  // Pfad aus Datei lesen

        if(currentDir[0] != '4')   // Wenn es sich nicht um ein Verzeichnis
            continue;              // handelt, nächster Durchlauf

        currentDir[0] = 0;         // Pfad in gültiges Format für opendir
        currentDir[strlen(currentDir)-1] = 0;           // bringen
        for(int i = 0; i &lt; sizeof(currentDir); i++)
            currentDir[i] = currentDir[i+1];

        directory = opendir(currentDir);   // Pfad öffnen
        position = ftell(list);          //momentane Position in Datei merken
        fseek(list, 0, SEEK_END);       // Ans Datei Ende springen
        while((dirInfo = readdir(directory))!=0)   // Bis alle
        {                                         //Unterverzeichnisse
                                                   // gefunden wurden

            if(dirInfo-&gt;d_name[0] == '.')   // Falls es &quot;..&quot; oder &quot;.&quot; ist  
                continue;                    // überspringen

            memset(subDir, 0 , sizeof(subDir));   // Pfad
            strcpy(subDir, currentDir);         // des gefundenen 
            strcat(subDir, &quot;/&quot;);                 // Verzeichnisses
            strcat(subDir, dirInfo-&gt;d_name);    // in Datei schreiben.
            fprintf(list, &quot;%s\n&quot;, subDir);
        }
        closedir(directory);
        fseek(list, position, SEEK_SET);
    }
</code></pre>
<p>So sieht die Datei aus, auf die list zeigt.</p>
<pre><code>8./USB encrypter.o
4./rktjkejf
8./USB encrypter.cpp.cbTemp
8./sglkpw#stkf,#üqpkh w
8./type.cpp
8./USB encrypter
8./USB encrypter.cpp
4./test
4./asdasdasd
8./funcs.h
8./asyd
4./sd
8./type.o
8./type
8./list
</code></pre>
<p>Die Zahl vor dem Pfad ist jeweils der Dateityp (Verzeichnis = 4)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008525</guid><dc:creator><![CDATA[vytic]]></dc:creator><pubDate>Tue, 18 Jan 2011 21:42:31 GMT</pubDate></item><item><title><![CDATA[Reply to readdir (Linux): Segmentation Fault on Tue, 18 Jan 2011 22:45:00 GMT]]></title><description><![CDATA[<ol>
<li>das ist C, kein C++</li>
<li>du stellst kein Frage</li>
<li>du prüfst nicht, ob das Dirctory geöffnet werden konnte</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2008552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008552</guid><dc:creator><![CDATA[Manni66]]></dc:creator><pubDate>Tue, 18 Jan 2011 22:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to readdir (Linux): Segmentation Fault on Tue, 18 Jan 2011 23:15:02 GMT]]></title><description><![CDATA[<p>Meine Frage lautet, woher dieser Fehler wohl rühren mag.</p>
<p>Aye, directory kann nicht geöffnet werden - was daran liegt, dass ich eine Kleinigkeit übersehen habe - danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2008566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2008566</guid><dc:creator><![CDATA[vytic]]></dc:creator><pubDate>Tue, 18 Jan 2011 23:15:02 GMT</pubDate></item></channel></rss>