2011-05-04 116 views
4

的情況是這樣的我的DBus API:誰打電話Linux系統

在一個基於Linux的手持設備我有具有DBUS的API準備通過第三方應用程序調用一個C程序。 DBus API在啓動時被調用。

在我的函數中是否有任何系統API可用於打印調用者的ID並將其保存到syslog?

在此先感謝!在org.freedesktop.DBus總線上

回答

2

/org/freedesktop/DBus對象具有屬於org.freedesktop.DBus接口兩種方法(哦,孔):GetConnectionUnixUser和​​。兩者都接受一個字符串唯一的連接名稱,可以通過調用dbus_message_get_sender(或者您的高級API包裝器提供的任何方法)獲得該名稱。

+0

嗨,它適合我。謝謝! – tao 2011-05-23 12:51:55

+0

值得指出的是,自從寫了這個答案之後,還添加了'org.freedesktop.DBus.GetConnectionCredentials'方法,它應該優先於'GetConnectionUnixUser'和'GetConnectionUnixProcessID'使用。這意味着一個方法調用而不是兩個,消除一些競爭條件,併爲您提供有關安全標籤的更多信息。請參閱規範:https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-get-connection-credentials – 2017-06-22 10:10:44