USB-Stick Wechsel erkennen (C++)

  • Hallo wertes Forum,

    mein Projekt ist ein Raspi-MP3 Spieler. Das Lesen und Wechseln von Verzeichnissen auf einem USB-Stick geht auch schon fein. Nun hätte ich aber gern, dass der Raspi auch "merkt", wenn der Stick abgezogen und ein anderer Stick drankommt (es soll dann wieder von Root aus die Baumstruktur erfasst werden etc.).

    Wie kann ich in meiner Hauptprogrammschleife am schnellsten (und mit erträglichem Programmieraufwand) erfahren, dass der Stick gewechselt wurde??

    In der grafischen Umgebung kommt ja beim Anstecken ein Fenster hoch (removable media inserted). Kann ich dieses Signal auch irgendwie in meinem C++ Programm ausnutzen??

    Gruss Tomas

  • Hallo Thomas,


    Du brauchst eigentlich nur die folgenden Linux-Kommandos in Deinem C-Programm aufzufrufen:

    Code
    lsusb -t 

    (gibt Dir Informationen, wo ein USB-Stick entdeckt wurde)

    Code
    df /dev/sd

    gibt Dir Informationen darüber, mit welchem Namen der USB-Stick ins-System eingehängt wurde (/media/...)

    Falls Du mehrere USB-Sticks gleichzeitig ermitteln willst, und Dir die Reihenfolge wichtig ist, in der die Sticks dem System bekannt gemacht wruden , dann ist noch mount wichtig. Dort erscheinen die Sticks (/dev/sd.. in chronologischer Reihenfolge zusamen mit ebenfalls der Information /media/...)#

    Falls Dein System Pipes zulässt, dann kannst Du diese Informationen relativ einfach abfragen. Z.B:
    df /dev/sd | awk '{print $4}' gibt Dir die 4. Spalte des df-Kommandos aus (sofern Du diese Info benötigst).

    Wenn Du mit diesen drei Kommandos lsusb, df und mount herumspielst, erhältst Du genau die von Dir gewünschten Daten. Die Umsetzung in C ist dann wohl relativ einfach.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (8. Oktober 2017 um 11:11)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!