Sourcode von Linux-Befehlen



  • Hallo,
    ich möchte den freien Plattenplatz der Festplatte ermitteln.
    Der Befehl df gibt auf der Console ja den Plattenplatz aus... 😋
    Jetzt hätte ich gern den Quellcode dieses Befehls angeschaut, doch leider finde ich ihn nicht 😞

    Kann mir jemand sagen, wo der Sourcecode zu den Linuxbefehlen liegt? Denn wie das Package heißt weiß ich leider auch nicht...

    Gruß und schon mal danke

    Poolplayer



  • df ist Teil der GNU fileutils und findet sich damit im gleichnamigen Paket unter
    http://www.gnu.org/software/fileutils/fileutils.html 🙂

    Edit: ist inzwischen zusammengeschmissen zu den coreutils unter http://www.gnu.org/software/coreutils/



  • Hallo TriePhoenix,
    vielen Dank für Deine Antwort.
    Ich habe mir coreutils von der gnu-Seite heruntergeladen und installiert. Es gibt zwar ein src bzw. lib-Verzeichnis, wo auch die Headerdatei zu dem Befehl df vorhanden ist. Doch wenn ich diese (oder eine andere) Headerdatei (z.B. fsusage.h --> mit der man den Freien plattenplatz ermitteln kann) einbinden will, dann findet der gcc die Headerdateien nicht.

    ➡ Dies liegt einfach daran, dass make/make install die Header nicht im Verzeichnist /usr/include installiert hat.

    Kann mir jemand sagen, wie ich make dazu bewegen kann, diese Headerdateien zu installieren??? 🙄

    Gruß und danke

    Poolplayer



  • man cp. Normalerweise haben die Header von installierten Anwendungen nichts in /usr/include zu suchen. Schau Dir lieber mal die Umgebungsvariable INCLUDE und den gcc-Parameter -I an.



  • Hallo,
    was meinst Du denn mit man cp --> da steht ja auch nur die hilfe zu dem copy-Befehl drin, und keine Infos zu Headerdateien... 😞

    gcc test.c -I /Pfad zu src-Verzeichnis
    

    Naja, dann findet er zwar die Headerdatei, doch compilieren kann ich immer noch nicht, weil ich wohl noch im gcc-Befehl Dateien mit einbinden müßte, die ich aber nicht kenne 😞
    Heißt das nun, dass ich diese Header-Dateien einfach nicht nutzen kann, oder bin ich einfach zu dämlich??? 😕



  • In den Header-Dateien steht nur die Deklaration der Funktionen, nicht aber die Definition. Die musst Du schon noch selber hinzulinken.



  • Hi,
    ich habe mir den Sourcecode von df.h / df.c näher angeschaut.
    Nach langem hin und her suchen hab ich gefunden, welche Module df benutzt.
    Dieses Wissen will ich euch nicht vorenthalten 😉

    Mit folgendem Programm wird die Plattengröße von / in Blöcken ausgegeben:

    #include <sys/statfs.h>
    
    int main()
    {
      struct statfs fsd;
      if (statfs ("/", &fsd) != 0)
        return -1;
    
      printf("Blockgröße:%i\nGesamte Blöcke:%i\nverfügbar(für normalen User):%i\n",fsd.f_bsize, fsd.f_blocks, fsd.f_bavail);
      return 0;
    }
    

    Falls jemand eine einfachere Möglichkeit kennt, kann er gern posten 😋

    Gruß

    Poolplayer

    @SG1: Es ist schon klar, dass in den Headerdateien nur die deklarationen stehen - Die entscheidende Frage ist nur in welchen Dateien stehen die Definitionen??? --> Wenn ich nur die .c-Datei hinzulinke klappt es auf jeden Fall nicht, das müssen schon noch irgedwie mehr sein... 😕 ??



  • btw. wenn du dich für die Funktionalität eines Programmes interessierst, kannst du das wunderbar mit strace auch machen.


Anmelden zum Antworten