我製作了一個C程序,在某些時候它調用了它的python GUI。從用root用戶運行的C程序啓動Python GUI
當我用sudo在桌面上運行C和python時,它的工作原理是sudo正在以我的用戶身份執行C程序。
但是,我在系統啓動時啓動了C代碼,因此它正在被root用戶執行,然後我無法在桌面上顯示Python GUI,因爲我得到了WARNING **: Could not open X display
。
C代碼使用inotify觀察二進制文件,並在打開二進制文件時執行一些工作,並通過簡單的system
調用打開Python GUI。
C代碼必須以root權限執行,但是python GUI可以以普通用戶身份啓動,當它需要它時,可能使用polkit來獲取它。它只需在/ var/lib中放置的xml文件中寫入一些內容。
任何想法我可以做到這一點?
顯示器可以硬編碼爲:0,但如果我以前不執行'xhost +',它不起作用,並且我無法從C代碼執行該命令,因爲它以root權限運行? – codiaf
@ user712533查看更新後的答案。 – Aya
如果您以root用戶身份運行該命令,則應該可以告訴它使用您的X授權。在調用啓動應用程序的'system()'之前,將'XAUTHORITY'環境變量設置爲「/pathto/user/homedir/.Xauthority」。這應該足以代替使用'xhost'命令。 –