D-Bus este un bus de mesaje sau una dintre căile de interacțiune a proceselor între ele în sistemul de operare GNU / Linux, utilizat în aproape toate distribuțiile moderne. Procesele de rulare deseori doresc să interacționeze între ele; Conducte (țevi), memorie partajată, RPC și așa mai departe. - toate acestea asigură schimbul de informații între ele.
D-Bus prezintă modul său alternativ de astfel de interacțiune. Daemonul dbus în sine este angajat în rutarea mesajelor, trimis de aplicații reciproc. Conceptul de dbus este aproximativ următorul: există
Fiecare conexiune la daemon are propriul nume, de exemplu org.kde.kopete.
Astfel, aplicațiile, cunoscute reciproc prin acest nume, pot lucra cu obiectele celorlalți.
introspecție
Se pune întrebarea, dar cum știm căile specifice ale obiectelor și numele metodelor, astfel încât să putem face ceva cu adevărat util? Acest lucru ajută capacitatea obiectelor de a privi în interiorul lor, similar cu metoda cu același nume pentru cercetarea psihologică. Fiecare obiect, chiar dacă nu se știe nimic despre el în prealabil, are o interfață org.freedesktop.DBus.Introspectable în care există un apel Introspect.
Să ne întrebăm org.freedesktop.DBus conexiunea obiect rădăcină pentru a spune despre ea însăși:
dbus-trimite --type = method_call --print-răspuns --dest = org.freedesktop.DBus / org.freedesktop.DBus.Introspectable.Introspect
Ca răspuns, este returnat un șir care conține un fișier XML cu o descriere, din care puteți afla ce interfețe sunt disponibile, ce metode au în el și care sunt nodurile copil, adică. obiecte de tip / Nume
Câteva exemple
Găsiți numele conexiunilor:
dbus-send - sesiune - dest = org.freedesktop.DBus --type = method_call --print-reply / org.freedesktop.DBus.ListNames
Trebuie remarcat faptul că există autobuze sistem (- sistem) și sesiune (- sesiune). Prima este comună pentru toate procesele, cea de-a doua este pentru procesele utilizatorilor și începe în momentul conectării (de exemplu, pornirea unei sesiuni KDE).
Obțineți un tabel care conține lista de contacte care rulează kopete:
dbus-send --dest = org.kde.kopete --type = metoda_call - tip-răspuns / Kopete org.kde.Kopete.contacts
Creați o muzică mai puternică:
dbus-trimite --dest = org.mpris.amarok --type = method_call --print-răspuns / int32 jucătorului org.freedesktop.MediaPlayer.VolumeSet: 95
Dezactivează computerul (fără drepturi de root):
dbus-trimite --system --dest = org.freedesktop.Hal --type = method_call --print-răspuns / org / freedesktop / Hal / dispozitive / calculator org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown