[英]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.