Zuweisen eines Charpuffers mit JNA, Rhino, JavaScript
-
22-09-2019 - |
Frage
In Narwhal verwenden wir JNA, um sie zu machen libc
Anrufe wie getcwd
und chdir
. Ich konnte dies nur mit meinem begrenzten Wissen über die JNA -Schnittstelle verwenden, da es sich um JavaScript in Rhino handelt und ausschließlich mit Primitiven zu tun hat. Ich muss wissen, wie man einen Char -Puffer zuteilt, damit ich ihn angeben kann getcwd
, einen JavaScript -Zeichenfolge aus diesem Puffer abrufen und den Puffer vermutlich in a finally
Klausel.
So schnappen wir uns das libc
Schnittstelle:
Hier ist wie chdir
ist implementiert:
Hier brauchen wir die Lösung für getcwd
Lösungen in Ruby oder einer anderen eingebetteten Sprache für JNA würden helfen.
Lösung
Sie können einen nio.buffer oder jna.pointer verwenden, um einen Ausgangspuffer zu übergeben, so etwas wie:
invokeString(new jna.Memory(4097), 4097)
GetCWD gibt ein Zeichen* an den Eingangspuffer zurück, so
Um längere Wege zu unterstützen, können Sie eine optionale Länge einnehmen
In Java, neue Datei ("."). getAbsolutepath () kann den aktuellen Weg erhalten, sodass Sie möglicherweise nicht GetCWD benötigen ...