如果沒有實現D-Bus方法的應用程序啓動並運行,我可以調用dbus_g_proxy_new_for_name嗎? 我不確定這是否是一種好的做法,或者是否通常。應用程序需要運行dbus_g_proxy_new_for_name才能正常工作?
3
A
回答
5
在我回答之前,我想指出,DBus-GLib is deprecated。但是,答案也適用於g_dbus_proxy_new(這基本上代替dbus_g_proxy_new_for_name)。
是的。
名稱所有者可以更改:該如何車主可以隨時間而改變,雖然它沒有明確提到時,有在呼叫(原文中強調)的時間沒有業主的情況下,dbus_g_proxy_new_for_name會談OVER TIME,例如在兩個不同的方法調用之間,除非名稱是唯一的名稱。如果您需要一個固定的所有者,您需要請求當前所有者並將代理綁定到其唯一名稱,而不是通用名稱;請參閱dbus_g_proxy_new_for_name_owner()。
在D-Bus激活中使用它實際上非常普遍。查看Raphaël Slinckx' DBus Activation Tutorial的「客戶端實現」部分。它包括這段代碼(注意註釋):
/* This won't trigger activation! */
proxy = dbus_g_proxy_new_for_name (connection,
"org.gnome.ServiceName",
"/org/gnome/ServiceName",
"org.gnome.ServiceName");
/* The method call will trigger activation, more on that later */
if (!org_gnome_ServiceName_echo_string (proxy, "The string we want echo-ed", &result, &error))
{
/* Method failed, the GError is set, let's warn everyone */
g_warning ("Woops remote method failed: %s", error->message);
g_error_free (error);
return;
}
d-Bus的激活甚至不被觸發,直到一個方法被調用後,如此明顯的名稱並不一定在此之前存在。
相關問題
- 1. 的Grails 2.3.4不能正常工作運行的應用程序
- 2. 需要密碼才能運行某些應用程序?
- 3. 如何讓PHP應用程序需要密鑰才能工作?
- 4. img lazyload需要滾動動作才能正常工作
- 5. 在Visual Studio中執行線程處理需要Join才能正常工作
- 6. 應用程序運行,而無需法測得的,但我認爲它需要的方法才能正常
- 7. js需要的警報框才能正常工作
- 8. 爲什麼RewriteCond需要此規則才能正常工作?
- 9. php郵件需要配置才能正常工作嗎?
- 10. 需要重試打開alsa才能正常工作
- 11. 人臉檢測是否需要SurfaceView才能正常工作?
- 12. 需要幫助調整腳本才能正常工作
- 13. jquery mobile需要刷新才能正常工作
- 14. SystemProperties.set需要什麼linux權限才能正常工作? (android)
- 15. 爲什麼curl需要.lib和.dll才能正常工作?
- 16. Ajax.BeginForm - 需要兩種形式才能正常工作
- 17. 谷歌地圖API需要刷新才能正常工作
- 18. sprintf()是否需要格式說明符才能正常工作?
- 19. 第一個Android應用程序不能正常工作..幫助需要
- 20. 需要澄清才能創建消耗工作流程的Web應用程序
- 21. 爲什麼Delphi控制檯應用程序需要表單才能使TSQLConnection正常工作?
- 22. Jsp + Java應用程序執行不能正常工作'
- 23. 通過應用程序運行shell命令..不能正常工作
- 24. android應用程序需要SD卡中的某個目錄才能運行
- 25. 做.net應用程序絕對需要.net框架才能運行?
- 26. PHP Zend Framework應用程序需要URL中的index.php才能在CENTOS上運行
- 27. 我的Python應用程序需要多長時間才能運行?
- 28. 我是否需要安裝任何程序才能運行Highchart?
- 29. 什麼使大多數程序需要安裝才能運行?
- 30. 爲什麼我的程序需要這幾行彙編代碼才能正常工作?