众所周知,每个JVM进程都会创建一个缓存目录。像这样:
/root/.java/deployment/cache/6.0/35
2df4eba3-16182299 2df4eba3-16182299-n 2df4eba3-4678facc.idx
2df4eba3-16182299.idx 2df4eba3-1a176e8d.idx 2df4eba3-654177dc.idx
2df4eba3-16182299-n是缓存位置。
我想使用JNI编程获得这样的JWS缓存位置。我试图用这种方式获取位置:
DIR *dirp;
FILE *fp;
struct dirent *entry;
char path[2048];
char link[2048];
char read_buf[2048];
dirp = opendir("/proc/self/fd");
if (dirp == NULL)
{
return -1;
}
while((entry = readdir(dirp)) != NULL)
{
char *tmp = entry->d_name;
int res = 0;
sprintf(link, "/proc/self/fd/%s", entry->d_name);
res = readlink(link, path, sizeof(path));
if (res < 0 || res >= sizeof(path))
{
continue;
}
int j = 0;
if (strstr(path, "libgoodluck.so") != NULL)
{
path[res] = '\0';
break;
}
}
我加载库libgoodluck.so,这将被下载到缓存位置。但我无法找到正确的道路。
我该怎样做才能找到正确的位置?