dbus用於程序間通訊,可以降低不同程式間的耦合性,dbus的原理同分布式計算很象,其中乙個介紹原理的**為:官方的 文件
用python來操作dbus很方便,python-dbus的教程: 教程
一些官方例子: 例子
1.首先要從dbus.service.object繼承,這樣才可以輸出方法和訊號,同時呼叫dbus.service.object來初始化bus類 型(session bus or system bus),以及 物件路徑
class msg(dbus.service.object):
def __init__(self,bus,object_path):
dbus.service.object.__init__(self,bus,object_path)
2.輸出訊號,先修飾,訊號要傳遞的引數有signature確定,然後再定義訊號函式,訊號函式體本身沒多大意義,有意義 的只在於函式體的引數,在dbus中的訊號名就是這個訊號函式的名字
@dbus.service.signal(dbus_inte***ce=msg_inte***ce_uri,
signature='as') #傳送了乙個可變陣列,但陣列的型別要一致,這裡都是string
def msg_signal(self,msg_list):
print "exported signal: ",msg_list #這個沒有意義
3..定義乙個傳送訊號的函式,注意要返回true,否則如果呼叫timeout_add的時候,它執行了一次就會停下來, 不會重複執行,因為timeout_add碰到false的時候就會停止執行
傳送訊號,其實也就只是呼叫剛才修飾的訊號函式而已
def construct_msg(self):
timestamp = time.strftime(timeformat)
self.msg_signal(["1111",timestamp,"this is the content","1 2 3"])
return true
4.連線到bus,注意在連線前要先選好loop的型別,否則不讓連線
dbusgmainloop(set_as_default=true) #選好loop的型別
bus = dbus.sessionbus()
amsg = msg(bus,msg_obj_path) #將物件輸出到bus中
gobject.timeout_add(1000,amsg.construct_msg) #定時傳送訊號,知道其中的函式返回false為止
如何利用anaconda來擴充套件pycharm庫
python 錯誤 attributeerror module pip has no attribute main 我在網上查了下說版本太高了pip要降級,降級完成之後又報了個錯誤 pip.vendor.urllib3.exceptions.readtimeouterror httpsconnect...
如何利用作業來偷懶?
如何利用作業來偷懶?作業的基本概念 作業 是指使用者向系統提交並要求執行的乙個任務。乙個作業對於乙個或多個程序。前台與後台 前台作業 與使用者進行互動操作。後台作業 不接受終端的輸入,但向終端輸出執行結果。前段和後台執行命令的語法格式 command 前台執行 command 後台執行 comman...
如何利用PowerBroker來防止橫向滲透
毫無疑問,任何乙個組織或公司都有可能受到網路攻擊。攻擊者可能已經盯上你很久了,並策劃對你的組織發動一場有針對性的攻擊,或者說他們也有可能通過社工技術或網路釣魚攻擊來以 廣撒網 的形式來攻擊你。無論是通過哪一種方式,攻擊者一旦進入了你的網路系統,他們就可以到處收集敏感資料 訪問企業郵箱或搜尋特權憑證等...