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:

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

Ecco come viene implementato chdir:

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

Ecco dove abbiamo bisogno della soluzione per getcwd

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

Soluzioni in Ruby o qualsiasi altro linguaggio incorporato per JNA aiuterebbero.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top