首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这种简单的JNA使用会在Mac上引起一个fork()?

为什么这种简单的JNA使用会在Mac上引起一个fork()?
EN

Stack Overflow用户
提问于 2012-07-19 00:00:22
回答 1查看 512关注 0票数 2

下面是JNA库在Java中创建硬链接的简单用法:

代码语言:javascript
复制
import com.sun.jna.Library;
import com.sun.jna.Native;
import java.io.File;
import java.io.IOException;

public final class HardLink {

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

    private HardLink() {
    }

    public static void link(File src, File dest) throws IOException {
        if (LIBC.link(src.toString(), dest.toString()) != 0)
            throw new IOException(LIBC.strerror(Native.getLastError()));
    }

    public static void main(String[] args) throws Exception {
        System.out.println("Attempting to hardlink " + args[0] + " -> " + args[1]);
        HardLink.link(new File(args[0]), new File(args[1]));
    }

    private interface LibC extends Library {
        int link(String from, String to);
        String strerror(int errno);
    }
}

当这个程序使用JNA 3.4.0在MacOSX10.7.4 (Lion)上运行时,它确实可以工作,但由于某种原因,它正在执行fork() --我之所以这么说,是因为它会导致Java图标在任务栏弹出弹出窗口,并在命令栏中显示"HardLink“作为程序名。

我的问题是:为什么JNA要做fork() (或者是)?这个程序有什么问题吗?

注意:我对从Java硬链接文件的其他方法不感兴趣。这只是一个例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-19 01:53:05

JNA加载一些AWT类,除非您运行的是headless。与AWT相关的类(包括Swing)的加载导致java进程出现在OSX Dock中。

使用-Djava.awt.headless=true运行您的程序。这将阻止它出现在OSX dock中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11545533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档