打开Unix / Solaris / C中用户拥有的目录中的文件/目录

时间:2015-03-27 14:43:02

标签: c unix solaris

我需要在程序中获取当前用户拥有的所有文件/目录。实际上我正试图在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 );

1 个答案:

答案 0 :(得分:0)

您是否阅读过proc(4)?这为您提供了在Solaris上使用/proc所需的文档。

pfiles(1)实用程序也应该有所帮助。但是,如果要查看特定用户打开的所有文件,则需要以该用户身份运行程序,或者以适当提升的权限运行程序以读取进程表

我没有发现你的问题描述非常清楚,也许你可以准确地澄清你想要实现的目标。