L'assegnazione di un buffer char con JNA, Rhino, JavaScript
-
22-09-2019 - |
Domanda
In Narwhal, stiamo usando JNA per effettuare chiamate libc
come getcwd
e chdir
. Sono stato in grado di utilizzare questo con la mia limitata conoscenza dell'interfaccia JNA in quanto riguarda JavaScript in Rhino, si occupa esclusivamente di primitive solo. Ho bisogno di sapere come allocare un buffer char così posso passarlo a getcwd
, recuperare una stringa JavaScript da tale buffer, e rilasciare il buffer, presumibilmente in una clausola finally
.
Ecco come ci afferra l'interfaccia libc
:
Ecco come viene implementato chdir
:
Ecco dove abbiamo bisogno della soluzione per getcwd
Soluzioni in Ruby o qualsiasi altro linguaggio incorporato per JNA aiuterebbero.
Soluzione
si potrebbe usare un nio.Buffer o jna.Pointer per passare un buffer di uscita, qualcosa come:
invokeString(new jna.Memory(4097), 4097)
getcwd restituirà un char * al buffer di ingresso, così JNA Will Marshall il ritorno ad una stringa
per supportare i percorsi più lunghi, si potrebbe prendere una lunghezza opzionale
in java, new File ( ""). GetAbsolutePath () può ottenere il percorso corrente, in modo da non avere bisogno getcwd ...