簡體   English   中英

使用C庫進行系統調用

[英]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指令或其他東西,具體取決於平台。

Linux中系統調用簡介

在Java中,這是使用本機方法完成的。 這些是用本native修飾符聲明的方法,(與抽象方法類似)沒有主體,其實際實現是使用依賴於平台的語言(通常是C)編寫的。

可以使用System.loadLibrary(String libraryName)在運行時加載其他本機方法實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM