2011-06-29 40 views
0

我有一個生成GTK +對話框的應用程序。從終端運行時,它可以正常工作。問題是我的應用程序作爲守護進程運行,並由/etc/init.d中的腳本啓動。從初始化腳本啓動的程序的GTK +對話框

我認爲使用init腳本啓動的所有內容都放在tty1中,其中沒有GNOME可用(它位於tty7上)。我不知道這是否正確,但我該如何解決這個問題?

預先感謝您!

回答

2

我很確定守護進程應該從來沒有包括GUI的東西......這屬於與守護進程通信的客戶端應用程序。

+1

也許這個答案很清楚:你應該把你的應用分成兩部分。一部分是核心守護進程,提供信息並監聽命令,另一部分是GUI客戶端。通過網絡,共享內存,管道進行通信... – moala

+0

感謝您的評論。事實上,守護進程不應該顯示任何內容,這是我陷入的概念錯誤。如果有人試圖做同樣的事情並最終閱讀這個主題,請更改您的設計! –

1

嗯,問題不在於tty,問題在於你的X服務器中有$ DISPLAY集,所以Gtk +知道在哪裏顯示你的窗口。在一個tty(即不是從X內部運行的腳本)中,它沒有設置,所以Gtk +不知道在哪裏顯示窗口。 你也不能假設X在特定的顯示器上運行,或者甚至X是可用的,這就是爲什麼你永遠不應該有守護進程顯示什麼。 一個好的守護進程並不期望用戶輸入,不會顯示任何內容並將其所有輸出重定向到日誌文件或系統日誌。

相關問題