Pregunta

En Narwhal, estamos usando JNA para hacer libc llamadas como getcwd y chdir. Solo he podido usar esto con mi conocimiento limitado de la interfaz JNA en lo que respecta a JavaScript en Rhino, tratando exclusivamente con primitivas. Necesito saber cómo asignar un búfer de char para poder pasarlo a getcwd, recupere una cadena de JavaScript de ese búfer, y traiga el búfer, presumiblemente en un finally cláusula.

Así es como tomamos el libc interfaz:

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

Así es cómo chdir está implementado:

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

Aquí es donde necesitamos la solución para getcwd

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

Las soluciones en Ruby o cualquier otro lenguaje integrado para JNA ayudarían.

¿Fue útil?

Solución

Puede usar un nio.buffer o jna.pointer para pasar un búfer de salida, algo así como:

invokeString(new jna.Memory(4097), 4097)

GetCWD devolverá un char* al búfer de entrada, por lo que JNA marcará el regreso a una cadena

Para admitir rutas más largas, puede tomar una longitud opcional

en Java, nuevo archivo ("."). GetAbSolutePath () puede obtener la ruta actual, por lo que es posible que no necesite getCwd ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top