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:

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#l32-42

Hier ist wie chdir ist implementiert:

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#l438-444

Hier brauchen wir die Lösung für getcwd

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#l416-419

Lösungen in Ruby oder einer anderen eingebetteten Sprache für JNA würden helfen.

War es hilfreich?

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 ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top