gpt4 book ai didi

c++ - MacOS - 如何使用 C/C++ 获取具有 PID 的进程用户/所有者?

转载 作者:行者123 更新时间:2023-11-28 05:07:06 27 4
gpt4 key购买 nike

我一直在使用 proc_info.h和类似的文件来获取有关我的进程的信息,如路径、ppids、名称等。现在我需要使用 C/C++ 获取拥有这些进程的用户。我怎样才能做到这一点?在proc_info.h我看到名为 proc_regioninfo 的结构其中有一个成员 pri_user_tag这可能是我正在寻找的,但我不知道如何填充 ````proc_regioninfo``` 的结构。我在网上到处找,找不到答案。

我一直在我的文件系统的这一部分进行挖掘,试图找到一些东西:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdks/MacOSX.sdk/usr/include所以也许这会帮助你找到东西。

这个问题How to programatically get uid from pid in osx using c++?有答案,但我不知道如何安装 libproc-dev就像这个人建议的那样,我的系统也无法弄清楚如何处理 #include <proc/readproc.h> .

如果您有任何想法,我将不胜感激!

最佳答案

事实证明,您根本无法通过 pid 获取用户名。这是我的解决方案,在这种情况下它应该适用于其他任何人。

如果您有来自 sysctl 调用的 PID,那么您已经有 kinfostructs,在这种情况下,您可以只使用这些代码行来访问该结构中的信息:

#include <pwd.h>
#include <sysctl.h>

struct passwd *pwd = getpwuid(kinfostructs[i].kp_eproc.e_ucred.cr_uid);
printf("username: %s\n",pwd->pw_name);

我无法按照他们 (stackoverflow) 允许我发布的方式格式化实际的源代码。如果您想要我使用的实际源代码,请向我索取。

关于c++ - MacOS - 如何使用 C/C++ 获取具有 PID 的进程用户/所有者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44445048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com