首页 文章

使用c库进行系统调用

提问于
浏览
2

通常,系统提供位于正常程序和操作系统之间的库或API . 在类Unix系统上,该API通常是C库(libc)实现的一部分,例如glibc,它为系统调用提供包装函数 . 函数如write(),read(),open()..用于从C程序进行系统调用 . 这是否意味着如果一个java程序必须进行系统调用,那么在最低级别它必须调用这些C库函数?如果是,那么如何... ???

3 回答

  • 0

    如果您真的需要,可以使用Java Native Interface(JNI)来实现 .

    要小心,这不是因为佯攻; JVM通常可以做你想要的 .

    JNI的一个用例是在Java中使用OpenSSL加密;当我测试时(这是近10年前),这曾经快得多 .

    http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

  • 0

    我假设您不想知道如何在Java中执行此操作,因为该问题未标记为java问题 .

    所以libc是正确的方法,但是,出于信息目的,在linux中,你可以使用syscall函数 . syscall函数可以使用Int 0x80信号,sysenter指令或其他东西,具体取决于平台 .

    Introduction to System Calls in Linux

  • 0

    在Java中,这是使用native Methods完成的 . 这些是使用 native 修饰符和(与抽象方法类似)声明的方法,没有正文,其实际实现是用平台相关语言编写的,通常是C.

    其他本机方法实现可以使用System.loadLibrary(String libraryName)进行运行时加载 .

相关问题