5
プログラム(konsole)を起動し、dbusメッセージを送信するbashスクリプトを作成しようとしています。ここに私の実験起動時にpidをqdbusサービス番号にマッピング
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スクリプトでは、直前に生成した特定のkonsoleインスタンスの正確なqdbusサービス名をどのように取得するのですか?
はここで厄介な、ハックソリューション
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`
だと、しかし確実に、より良い方法があります!
'サービス 'org.kde.konsole'は存在しません.'しかし、私がkonsoleを手動で起動すると、サービス' org.kde.konsole.12345'(またはそれに類するもの)が存在します。 'qdbus |少なくとも1つのkonsoleを実行していない限り、grep konsole'は結果を表示しません。 – spraff