отображение pid на служебные номера qdbus после запуска - PullRequest
5 голосов
/ 28 марта 2012

Я пытаюсь написать 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}, но часть 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 Ответ

0 голосов
/ 01 апреля 2012

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

...