[英]system calls using c library
通常,系统提供位于普通程序和操作系统之间的库或API。 在类似Unix的系统上,该API通常是C库(libc)的实现的一部分,例如glibc,该库为系统调用提供包装函数。例如write(),read(),open()之类的函数。用于从C程序进行系统调用。这是否意味着如果Java程序必须进行系统调用,则必须在最低级别上调用这些C库函数?
如果确实需要,可以使用Java本机接口(JNI)来实现。
当心,这不是为了假冒。 JVM通常可以执行您想要的操作。
JNI的一个用例是使用OpenSSL进行Java加密。 当我对其进行测试时(过去将近10年前),它的速度通常要快得多。
http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html
我假设您不想知道如何在Java中执行此操作,因为该问题未标记为Java问题。
因此,libc是执行此操作的正确方法,但出于参考目的,在linux中,可以使用syscall函数。 syscall函数可以使用Int 0x80信号,sysenter指令或其他东西,具体取决于平台。
在Java中,这是使用本机方法完成的。 这些是用本native
修饰符声明的方法,(与抽象方法类似)没有主体,其实际实现是使用依赖于平台的语言(通常是C)编写的。
可以使用System.loadLibrary(String libraryName)
在运行时加载其他本机方法实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.