如何以编程方式检索正在运行的进程的 GID

Bob*_*tle 5 linux c proc

我需要编写一些 C 代码来检查我知道其 PID 的正在运行的进程的有效 GID。我还没有找到任何直接的方法来做到这一点。我可以使用许多重量级的 kludge,例如调用popen("/bin/ps ARGS", "r")和解析其输出,或fopen("/proc/PID/status", "r")解析输出,但我正在寻找一种更清晰、更直接的方法。如果只getegid()采用 PID 参数...

Bob*_*tle 1

这似乎是一个很受欢迎的问题,所以我想把答案说得非常清楚。@MarkPlotnick 给出了最好的答案,作为对之前(相当好的)答案的评论,但我们还没有引起他的注意而重新发布它,所以我可以接受它作为正确的答案并帮助人们。所以,向马克道歉:

Mark Plotnick 说: 你也可以做 stat("/proc/nnn", &stb); 该进程的有效 gid 将位于 stb.st_gid 中。这同时具有更高的可移植性(它可以在 Linux 和 FreeBSD 上运行)和更少的可移植性(没有文档记录)。

谢谢马克!