تخصيص مخزن مؤقت مع JNA و Rhino و JavaScript
-
22-09-2019 - |
سؤال
في Narwhal ، نستخدم JNA لصنعها libc
مكالمات مثل getcwd
و chdir
. لقد تمكنت فقط من استخدام هذا مع معرفتي المحدودة لواجهة JNA لأنها تتعلق بـ JavaScript في وحيد القرن ، والتعامل حصريًا مع البدائية. أحتاج إلى معرفة كيفية تخصيص مخزن مؤقت لـ Char حتى أتمكن من تمريره إليه getcwd
, ، استرجع سلسلة JavaScript من هذا المخزن المؤقت ، وقم بتخصيص المخزن المؤقت ، على الأرجح في أ finally
بند.
إليكم كيف نلتقط libc
واجهه المستخدم:
إليك الطريقة chdir
تم تنفيذه:
هنا حيث نحتاج إلى الحل getcwd
من شأن الحلول في روبي أو أي لغة أخرى مضمنة لـ JNA أن تساعد.
المحلول
يمكنك استخدام nio.buffer أو jna.pointer لتمرير مخزن مؤقت للإخراج ، شيء مثل:
invokeString(new jna.Memory(4097), 4097)
ستعيد getCWD char* إلى المخزن المؤقت للإدخال ، لذلك سوف تقوم JNA بمقدمة العودة إلى سلسلة
لدعم مسارات أطول ، يمكنك أن تأخذ طولًا اختياريًا
في Java ، ملف جديد ("."). يمكن لـ GetabsolutePath () الحصول على المسار الحالي ، لذلك قد لا تحتاج إلى getCWD ...