সরাসরি জাভা থেকে সিস্কলগুলি আহ্বানের কোনও উপায় আছে, বা প্রথমে কোনও নেটিভ পদ্ধতিতে কল করা প্রয়োজন?
সরাসরি জাভা থেকে সিস্কলগুলি আহ্বানের কোনও উপায় আছে, বা প্রথমে কোনও নেটিভ পদ্ধতিতে কল করা প্রয়োজন?
উত্তর:
আপনি একটি নেটিভ পদ্ধতি ব্যবহার করতে হবে, কিন্তু আপনি তা নিজেকে বাস্তবায়ন করতে প্রয়োজন হবে না। জাভা নামক JNI উপর একটি প্রকরণ রয়েছে JNA (জাভা দেশীয় এক্সেস) , যা আপনি তাদের প্রায় আবৃত একটি JNI ইন্টারফেস ছাড়াই সরাসরি ভাগ লাইব্রেরি অ্যাক্সেস করতে, যাতে আপনি ব্যবহার জন্য glibc সাথে সরাসরি ইন্টারফেস করতে পারেন করতে দেয়:
import com.sun.jna.Library;
import com.sun.jna.Native;
public class Test {
public interface CStdLib extends Library {
int syscall(int number, Object... args);
}
public static void main(String[] args) {
CStdLib c = (CStdLib)Native.loadLibrary("c", CStdLib.class);
// WARNING: These syscall numbers are for x86 only
System.out.println("PID: " + c.syscall(20));
System.out.println("UID: " + c.syscall(24));
System.out.println("GID: " + c.syscall(47));
c.syscall(39, "/tmp/create-new-directory-here");
}
}
syscall
ইন্টারফেসে @ ম্যাক্স ? না, syscall
সি এর মতো ঠিক মতো কল করার জন্য যথাযথ কলটি উপস্থাপন করতে পূর্ণসংখ্যা নেয় takes একটি গুচ্ছ আছে #define
মধ্যে গুলি /usr/include/asm/unistd.h
মত, #define __NR_mkdir 39
এটা সি ফাংশন কলিং মানুষের জন্য সহজ করতে, কিন্তু আমি সেখানে স্বয়ংক্রিয়ভাবে জাভা মধ্যে যারা আমদানি করতে কোন উপায় আছে বলে মনে করি না আপনি তাদের সব নিজেকে সংজ্ঞায়িত করতে চাই
একটি নেটিভ পদ্ধতি বা আপনার জন্য এটি করে এমন একটি গ্রন্থাগার ব্যবহার করা প্রয়োজন।