我需要在程序中获取当前用户拥有的所有文件/目录。实际上我正试图在solaris中读取/ proc文件系统(11)。需要获得类似于ps -u的输出,但只需要pids并且需要从程序中完成它。我尝试的只是readdir和每个entry / dirname,尝试读取/ pos / name / psinfo,如果失败则跳过else,如果它打开列表pid。有更有效的方法吗?我检查了ps -u如何通过truss工作,它只打开用户pids的/ proc / pid / psinfo文件。不知道它是如何弄清楚这是当前用户pid。 我认为popen(“ps -u”)比我正在做的更有效,有没有更好的方法来做到这一点? 我正在尝试使用Solaris 11。
以下是示例代码
do
{
errno = 0;
pDirEnt= readdir(dptr);
if(pDirEnt){
sprintf(fileToOpen, "/proc/%s/psinfo", pDirEnt->d_name);
sprintf(asfileToOpen, "/proc/%s/as", pDirEnt->d_name);
count++;
fd = open(fileToOpen, O_RDONLY);
if(fd >= 0) {
read(fd, &psInfo, sizeof(struct psinfo));
close(fd);
..
..
}
}
} while( haveMore );
答案 0 :(得分:0)
您是否阅读过proc(4)
?这为您提供了在Solaris上使用/proc
所需的文档。
pfiles(1)
实用程序也应该有所帮助。但是,如果要查看特定用户打开的所有文件,则需要以该用户身份运行程序,或者以适当提升的权限运行程序以读取进程表
我没有发现你的问题描述非常清楚,也许你可以准确地澄清你想要实现的目标。