Un tampon de l'allocation omble chevalier de la JNA, Rhino, JavaScript
-
22-09-2019 - |
Question
Dans Narwhal, nous utilisons la JNA pour faire des appels libc
comme getcwd
et chdir
. Je n'ai pu utiliser avec ma connaissance limitée de l'interface JNA en ce qui concerne JavaScript dans Rhino, traitant exclusivement des primitives. Je dois savoir comment allouer un char buffer afin que je puisse le transmettre à getcwd
, récupérer une chaîne JavaScript à partir de ce tampon, et libérer le buffer, probablement dans une clause finally
.
Voici comment nous saisissons l'interface libc
:
Voici comment chdir
est mis en œuvre:
est ici où nous avons besoin de la solution pour getcwd
Solutions en Ruby ou tout autre langage intégré pour la JNA serait utile.
La solution
vous pouvez utiliser un nio.Buffer ou jna.Pointer pour passer un tampon de sortie, quelque chose comme:
invokeString(new jna.Memory(4097), 4097)
getcwd renvoie un char * à la mémoire tampon d'entrée, de sorte jna volonté Marshall le retour à une chaîne
pour soutenir des chemins plus longs, vous pouvez prendre une longueur en option
en java, new File ( ""). GetAbsolutePath () peut obtenir le chemin en cours, de sorte que vous ne pourriez pas besoin getcwd ...