【发布时间】:2018-11-04 09:40:16
【问题描述】:
我用 C 编写了以下代码。到目前为止,我所做的是打开 proc 目录并读取其中的进程 - 不包含数字字符的字典被简单地忽略,因为我只想查看数字目录。我要做的是打印proc目录中所有具有读写权限的进程的PID。我的问题是如何从 proc/.../maps 文件中提取进程的权限?
这是我遇到问题的代码的 sn-p:
sprintf(buf, "/proc/%d/maps", tgid->d_name);
file = fopen(buf, "r");
while (fgets(buf, sizeof(buf), file)) {
sscanf(buf, "%x-%x %4c %x %x:%x", &from, &to, flags, &offset, &major, &minor);
}
fclose(file);
if (flags[0] == 'r' && flags[1] == 'w') {
printf("%d\n", tgid->d_name);
}
【问题讨论】:
-
也许将您的
printf()放入循环中? -
即使进行了编辑,问题仍然不清楚并且显示出很多混乱。一个进程没有权限(但它确实有credentials(7) ...)
-
花几天时间阅读更多关于 Linux 和操作系统的信息。我的回答提供了一些参考资料(其中大部分都可以免费下载,但您需要很多天才能阅读)。你一直很困惑(一个进程没有权限!)
标签: c file parsing process proc