Ich habe ein Problem mit dem Erstellen eines Verzeichnisses innerhalb eines Linux-Kernel-Moduls.Linux Kernel Modul - Verzeichnis erstellen
Was ich will: Erstellen eines Verzeichnisses innerhalb eines Kernel-Moduls.
Hier ist mein eigentlicher Code:
struct file *fp = (struct file *) NULL;
fp = filp_open("/home/testdir", O_DIRECTORY|O_CREAT, S_IRUSR);
Aber es wird eine Datei erstellt, anstatt Verzeichnis.
versuchte ich zu gleichen Code wie oben, ohne das Flag „O_DIRECTORY“:
struct file *fp = (struct file *) NULL;
fp = filp_open("/home/testdir", O_CREAT, S_IRUSR);
Und das Ergebnis ist ähnlich dem vorherigen Ergebnis.
Ich verstehe das Verhalten nicht. Was mache ich falsch?
Edit 1: Ich entwickle auf einer Raspberry PI, Raspbian, Kernel-Version: 4.4.43-v7
Vielleicht bedeutet 'O_DIRECTORY', irgendwelche übergeordneten Verzeichnisse zu erstellen, haben Sie versucht,' 'home/testdir/delete-this' '? Wenn es funktioniert, verwenden Sie die falsche Funktion. Oh, das ist nur eine wilde Vermutung. Ich habe keine Ahnung, was 'filp_open()' ist oder tut. –
Das funktioniert nicht, aber danke für den Versuch! Es erstellt nicht die Verzeichnisse "testdir" oder "delete-this" –
Warum verwenden Sie 'mkdir()' nicht? und dieser Aufruf sollte nach dem Mann scheitern, nicht überprüfen Sie den Rückgabewert? ["Wenn Pfadname kein Verzeichnis ist, verursacht das Öffnen fehlgeschlagen."] (Http://rz2.com/man2/open.2.html). Übrigens ist dies nutzlos, um 'NULL' zu erzeugen, und dies ist nutzlos, um Ihre Variable auf' NULL' zu initialisieren, wenn Sie es unmittelbar danach beeinflussen. Das ist schlechte Praxis. – Stargateur