gpt4 book ai didi

OS X 上的 Java DTrace 桥

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:35 24 4
gpt4 key购买 nike

我正在尝试获取 OS X 上操作系统/内核级别的文​​件系统事件。我必须遵循两个要求。第一个是在 java 中执行此操作,因为我开发的整个项目都是用 java 编写的。第二个是我必须找出文档何时被打开。

对于 Linux,我使用了 inotify-java,但我在 OS X 上找不到一个好的等效项。此外,JNA 没有提供有用的绑定(bind)。目前,我通过频繁调用 lsof 程序来避免捕获事件。然而,这是一个糟糕的解决方案。

感谢您的帮助。

最佳答案

您可以在 OSX 上使用 dtrace,但由于它需要 root 权限,因此您不希望将其放入系统的运行时中。

无论如何,您都无法在纯 Java 中执行此操作(任何 Java API 都将是一些较低级别的 C 内省(introspection)的包装器,如果您在内核范围内执行此操作,则需要以 root 身份完成)。

如果您只想跟踪程序何时打开文件(而不是同一系统上的其他文件),那么您可以安装自己的安全管理器并实现 checkRead() 系列方法,这应该让您了解何时发生访问。

import java.io.*;

public class Demo {
public static void main(String args[]) throws Exception {
System.setSecurityManager(new Sniffer());
File f = new File("/tmp/file");
new FileInputStream(f);
}
}
class Sniffer extends SecurityManager {
public void checkRead(String name) {
System.out.println("Opening " + name);
}
}

关于OS X 上的 Java DTrace 桥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com