Отображение pid на служебные номера qdbus после запуска

Я пытаюсь написать скрипт bash, который запустит программу (konsole) и отправит ей сообщения dbus. Вот мой эксперимент

konsole &
echo pid is $!
ps aux | grep konsole
qdbus | grep konsole

Это выводы

pid is 2726
me    2726  0.0  0.4  45404  9952 pts/0    S+   14:59   0:00 konsole
 org.kde.konsole-2729

Имя сервиса qdbus всегда org.kde.konsole-{pid+epsilon} но эпсилон часть непредсказуема.

В моем скрипте bash как мне получить точное имя службы qdbus для конкретного экземпляра konsole, который я только что создал?


Вот противное, взломанное решение

qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/before
konsole &
sleep 1
qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/after

N=`sort /tmp/before /tmp/after | uniq -u`

но наверняка есть лучший способ!

1 ответ

Вы можете проверить PPID qdbus, чтобы увидеть связанную консоль.

Попробуйте запустить новый экземпляр Konsole через D-Bus API с qdbus org.kde.konsole /Konsole newSession, Он вернет идентификатор сеанса, который впоследствии можно будет использовать для управления им с помощью вызовов /Session/$SID объект org.kde.konsole оказание услуг.

Другие вопросы по тегам