Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有Unix函数的Java库吗?_Java_Unix_Java Native Interface_Posix - Fatal编程技术网

有Unix函数的Java库吗?

有Unix函数的Java库吗?,java,unix,java-native-interface,posix,Java,Unix,Java Native Interface,Posix,我正在寻找一个Java库来与标准Unix函数接口,即stat(),getpwuid(),readlink() 这曾经存在,被称为javaunix。它在2000年发行。看这个。但是项目页面现在不见了 在今天的Java中,这些类型的函数有什么现代的替代品吗?您可以对/bin/ls-l进行系统调用并解析输出,或者编写自定义JNI方法,但这些方法比简单地使用旧的javaunix库要复杂得多 澄清--为了从C程序中找到文件的所有者,它应该调用提供所有者UID的stat(),然后使用getpwuid()从U

我正在寻找一个Java库来与标准Unix函数接口,即
stat()
getpwuid()
readlink()

这曾经存在,被称为
javaunix
。它在2000年发行。看这个。但是项目页面现在不见了

在今天的Java中,这些类型的函数有什么现代的替代品吗?您可以对
/bin/ls-l
进行系统调用并解析输出,或者编写自定义JNI方法,但这些方法比简单地使用旧的
javaunix
库要复杂得多


澄清--为了从C程序中找到文件的所有者,它应该调用提供所有者UID的
stat()
,然后使用
getpwuid()
从UID中获取帐户名。在Java中,这可以通过自定义JNI方法或使用JNI的
javaunix
库来完成。

我不知道有任何库具有Unix函数


对于大多数函数,我相信,您可以使用标准JavaAPI来做您想要做的事情。例如,不需要使用命令
ls
来读取某个目录的文件。但是在某些特定的情况下,比如
stat
(为了确定文件是否是链接),您必须使用JNI。

考虑到它几乎必然是特定于平台的,我会惊讶地看到一个JNI。Java不是这项工作的最佳工具。但如果您坚持的话,您当然可以通过JNI连接或调用外部程序。或者看看Groovy,我知道Groovy相当适合编写shell脚本,尽管我个人没有使用它的经验。

我知道有两个引人注目的项目:

  • (基于JNI)[源自Jython]
  • (基于JNA)[源自JRuby]
我个人很喜欢。看看我的这个例子,映射
链接(2)


据我所知,JNA-POSIX目前处于停滞状态

开发人员继续创建

import com.sun.jna.Library;
import com.sun.jna.Native;

class Link {

    private static final C c =
        (C) Native.loadLibrary("c", C.class);

    private static interface C extends Library {

        /** see man 2 link */
        public int link(String oldpath, String newpath);
    }

    @Override
    protected void hardLink(String from, String to) {
        c.link(to, from);
    }
}