我是新的C++。我的问题是我有一个创建很多进程的进程,我想识别其中一个子进程(获得pid)。循环使用儿童需要大量资源(不要问为什么)。所以我试图通过(不知何故)确定它是否使用sd_notify
并获得pid(如果可能的话,我现在不会真正实现)来获取进程的PID。我使用Ubuntu 14.04,创造了小测试程序:C++:未定义引用'sd_notify'
#include <systemd/sd-daemon.h>
#include <stdio.h>
int main()
{
int a;
a = sd_notify(0, "READY=1");
printf("%d -> \n", a);
fflush(stdout);
}
但它给了我错误说undefined reference to 'sd_notify'
。
P.S 我发现sd_notify
是systemd系统。在新贵系统中,这相当于什么?或者我怎样才能确保我搜索的过程不使用这个功能?或者是否可以使用sd_notify
记录进程发送的所有消息?
似乎有点像[在XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy - 问题) - 你为什么相信你能够通过使用'sd_notify'来识别一个进程?为什么你需要得到这个特定孩子的PID? – davmac
我真正想要的是,我以用户A的身份登录,以用户B的身份创建进程,并且该进程为用户B创建会话('/ etc/X11/Xsession'gnome-session --session = ubuntu'')我试图从用户B的会话过程中注销dbus连接名称(来自dbus-daemon --session)并注销用户。 – Rasty
好的,那么这就是你应该问的问题。 :)(并且添加了很多细节,因为有很多事情仍然不清楚你正在做什么的限制。为什么不使用标准DBus API(systemd或consolekit)来定位会话?) – davmac