Qt4 - Image Mounten - Linux



  • Hallo, kann mir jemand sagen wie ich ein ISO-Image mit Qt4 mounten kann?

    Hinzu kommt ja noch das nur root mounten kann...

    Also root führe ich ja folgenden Befehl aus:

    mount /pfad/mein.iso /mnt -o loop
    

    Wie könnte ich das am geschicktesten mit Qt4 verpacken?

    Danke für die Hilfe

    so long

    jd



  • die api für mount findest du unter <sys/mount.h>

    wie man das verpacken kann? gute frage. das hängt sehr davon, wie du das nutzen willst. wenn das etwas mounted, was nur für dein programm von interesse ist und danach wieder ausgehängt werden soll, würde sich vllt ein RAII-container drumherum bauen. ansonsten eher nur ein paar funktionswrapper, damit du nicht mit den char* rumspielen musst.



  • Ok danke erstmal für die Hilfe...

    Also ich will ein Image mounten, Der Zugriff soll über den normalen FileExplorer stattfinden, oder über meine Software... Vorerst weder ich nur den normalen FileExplorer verwenden... Sprich ich baue quasi erstmal einen Funktionswrapper darum um das "Problem" mit den chars zu beseitigen. Ich habe mir da so vorgestellt, das ich einfach QString zu char convertiere oder gleich mit QChar arbeite, bin da auf dem richtigen weg, oder ist der ansatz falsch?

    Ich kann mit zwar vorstellen was du meinst, aber was genau ist ein Funktionswrapper und ein RAII-container, ich kann mit den beiden begriffen nicht so richtig was anfangen.

    so long

    jd



  • ein raii-contaier ist klasse, die für dich resourcen nach dem raii-pattern belegt. also in ctor mounten und dtor unmounten.

    funktionswrapper heißte einfach, dass du dir funktionen schreibst, die das c-interface hübscher nutzbar machen:
    int mount(const QString& device,const QString& target);
    und dann die standardoptionen benutzt. zumindest ich habe wenig lust so etwas hier häufiger zu schreiben
    "mount(device.toLocal8Bit().constData(),target.toLocal8Bit().constData(),"iso9660",0,0);", dann doch lieber "mount(device,target);". das kann man dann auch einfacher portieren, falls du das verlangen danach hast.

    ansonsten bin ich da auf ein kleines problem gestoßen: mount() ist nicht in der lage loop-devices ohne weiteres zu mounten. wie ich inzwischen auch feststellte, ist der code den man dafür braucht nicht ganz trivial. das einfachste ist wohl, dass du dir die sourcen von mount ziehst und daraus die dateien lomount.h und lomount.c verwendest. das interface ist eher trivial. es besteht eigentlich nur aus zwei relevanten funktionen, dafür ist der code selber eher mäßig dokumentiert.


Anmelden zum Antworten