2012-03-28 9 views
5

başlatılması sonra servis numaralarını qdbus için. İşte benim deneydirharitalama pid ben bir program (konsole) başlatmak ve buna dbus mesajlar gönderir bir bash senaryo yazmaya çalışıyorum

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

Bu qdbus hizmet adı daima org.kde.konsole-{pid+epsilon} ama epsilon kısmı tahmin edilemez

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

çıkarır. Benim bash komut dosyasında

, nasıl ben sadece olurken özellikle konsol örneği için tam qdbus hizmet adı alabilirim?


Burada kötü, hacky çözüm

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` 

ama mutlaka daha iyi bir yolu yoktur!

cevap

0

qdbus org.kde.konsole /Konsole newSession D-BUS API'si ile yeni Konsole örneğini başlatılması deneyin. Daha sonra org.kde.konsole hizmetinin /Session/$SID nesnesine yapılan çağrılarla kontrol etmek için kullanılabilecek oturum kimliğini döndürür.

+4

'Hizmeti 'org.kde.konsole' exist.' gelmez ama konsole elle başlatmak o zaman (veya benzeri)' org.kde.konsole.12345' hizmet var. 'qdbus | En az bir konsolu çalıştırmadıkça grep konsole 'hiçbir sonuç vermiyor. – spraff

İlgili konular