深い検索で4時間を費やしましたが、見つからなかった:Qtの下でDBUS送信者からPIDを取得する方法。呼び出し側のD-バスIDを取得して、メッセージを送ったプロセスのpidを取得するためにGetConnectionUnixProcessIDを呼び出すためのDBUSから送信者PIDを取得する
コールdbus_message_get_sender:それは非常に簡単です他のdbusのlibsから
。
Qtからの操作方法? このコードを使用しようとしましたが、クライアントアプリケーションではなくPIDが返されます。
class ServerAdaptor: public QDBusAbstractAdaptor
{
public Q_SLOTS:
// this method shared through the D-BUS and called from different application (client)
bool Show(const QString &in0)
{
QDBusConnection connection = QDBusConnection::connectToBus(QDBusConnection::SessionBus, "org.freedesktop.DBus");
if(connection.isConnected())
{
qDebug() << "Sender PID " << connection.interface()->servicePid( QDBusConnection::sender().baseService()).value();
}
}
}
編集:
D-BUSを介してリモートアプリケーションからのPIDを取得する方法(Qtの)
// this class receive D-BUS methods
class Server: public QObject, protected QDBusContext {
public slots:
bool SomeMethod(const QString &name)
{
qDebug() << "PID is: " << connection().interface()->servicePid(message().service());
}
}
connection()。baseService()はQDBusConnection :: sender()。baseService()と同じです。私は私についてではなく、発信者に関する情報を得る必要があります。呼び出し元プロセスについて何かを取得するには? org.freedesktop.DBus.GetConnectionUnixProcessIDからPIDを取得するために接続のバス名を取得する必要があります – Dmitry