Вы можете использовать dtrace в OSX, но, поскольку ему нужны привилегии суперпользователя, это не то, что вы хотели бы поместить в среду выполнения системы.
В любом случае вы не сможете сделать это на чистой Java (любой Java API будет оберткой вокруг некоего самоанализа C-уровня, и если вы делаете это для всего ядра, это необходимо сделать как 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);
}
}