Free DiskSpace unter Linux

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Free DiskSpace unter Linux

    Hallo Gemeinde,

    ich habe ein kleines Problem, ich will/muss den freien und belegten Speicherplatz eines Laufwerkes ermitteln (C++), was sich jedoch etwas komplizierter herausstellt als ich das geplant habe.

    C++ bietet da leider keine Möglichkeit, Qt4 genau so wenig, die Boost-Filesystem Library leider auch nicht. Also dachte ich mir wenn df das kann, kann ich das auch, also habe ich

    Quellcode

    1. system("df -h > df.txt");


    gemacht und dann die File ausgewertet, diese Möglichkeit finde ich sehr unschön.

    Mein 2. Ansatz war, das ich mit die sys/statvfs.h vorgenommen habe, und mit der struct statvfs gearbeitet habe, leider liefert mir die Struktur lediglich Blöcke, ich kann somit sagen "hey du hast doch 493 blocks freien Speicherplatz"; was naja nicht gerade komfortabel ist.

    Eine Möglichkeit wäre natürlich das ganze aus zu rechnen, jedoch sind da meine kenntnisse sehr beschränkt, das hatte ich vor xx Jahren mal in der Berufsschule.

    Kennt da jemand eine Alternative, oder eine Library die sowas kann?

    so long

    JFoX
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Hallo, ich habe mich für einen anderen Weg entschieden, da x unabhänig ist, im endefekt parse ich auch nur df -h, aber auf eine schönere methode, ohne das in eine richtige Datei um zuleiten, aber seht selbst.

    Quellcode

    1. #include </usr/include/stdio.h>
    2. #include <QFile>
    3. void CMainWindow::calculateDiskSpace() {
    4. QString cmd("df -h | grep /dev/");
    5. FILE *infile = popen( QFile::encodeName(cmd).data(), "r" );
    6. if (infile == NULL)
    7. return;
    8. QFile file;
    9. if (!file.open(infile, QIODevice::ReadOnly))
    10. return;
    11. QTextStream in(&file);
    12. QString line = in.readLine();
    13. while (!in.atEnd()) {
    14. line.append("\n");
    15. line.append(in.readLine());
    16. }
    17. labelDiskSpace->setText(line);
    18. labelDiskSpace->adjustSize();
    19. }
    Alles anzeigen


    Nun kann man QString auf beliebige weiser zerlegen und aus einander pflücken.

    so long
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.