Вопрос

В Нарвале мы используем JNA, чтобы сделать libc звонит как getcwd а также chdir. Анкет Я смог использовать это только с ограниченными знаниями о интерфейсе JNA, поскольку он относится к JavaScript в носочке, имея дело исключительно с примитивами. Мне нужно знать, как выделить буфер, чтобы я мог передать его getcwd, получить строку JavaScript из этого буфера и разделите буфер, предположительно в finally пункт.

Вот как мы хватаем libc интерфейс:

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

Вот как chdir реализовано:

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

Вот где нам нужно решение для getcwd

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

Решения в Ruby или любом другом встроенном языке для JNA помогут.

Это было полезно?

Решение

Вы можете использовать Nio.Buffer или JNA.Pointer для прохождения выходного буфера, что -то вроде:

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

getCwd вернет char* в буфер ввода, так что JNA принесет возврат к строке

Чтобы поддержать более длинные пути, вы можете взять дополнительную длину

В Java, новый файл ("."). getabsolutepath () может получить текущий путь, поэтому вам может не понадобиться getCwd ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top