我想打電話給Linux的使用JNA在Java安裝命令,並將調用結果填充的掛載點列表,但無法理解應該是什麼實際的返回類型的Linux命令的輸出爲接口方法。如何讀取使用JNA
如果我使用int,那麼它打印-1沒有任何錯誤。我認爲這是某種錯誤的表現。
public class MountTest {
private interface CLibrary extends Library {
String[] mount();
}
public static void main(String[] args) {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary("c", CLibrary.class);
System.out.println(INSTANCE.mount());
}
}
我試圖根據以下DOC但沒有任何工程使用不同的返回類型。
我想我的問題是基於
My library sometimes causes a VM crash不正確的簽名:仔細檢查方法的簽名導致崩潰,以確保所有參數都是合適的尺寸和類型。對本地指針變化要特別小心。另請參閱有關調試結構定義的信息。
任何人都可以幫助我解決這個問題。我應該使用哪種返回類型,以便可以訪問掛載點列表。
更新: 我能夠通過調整代碼如下運行Linux命令:
public class MountTest {
private interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary("c", CLibrary.class);
int runCommand(String cmd);
}
public static void main(String[] args) {
CLibrary.INSTANCE.runCommand("mount");
}
}
現在的問題是,它的打印到標準輸出。我不知道如何閱讀使用JNA
如何直接調用安裝功能,使用JNA,看着它的返回值(int)來確定它是否成功:http://man7.org/linux/man-pages/man2/mount.2.html – kvr
我想要的是所有當前連接的文件系統的列表,它實際上是已知掛載點列表。在這種情況下,我不會回報價值 – Vahid