我是新的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