Terminal

在初始化腳本內啟動的程序上將 ncurses 用於基本 GUI

  • March 25, 2018

我有一個在嵌入式設置(buildroot)上執行的自定義編寫應用程序。每次目標設備啟動時,我的應用程序都必須執行,因此我編寫了一個初始化腳本來執行此操作,它工作正常。然而,應用程序的一部分有一個用 ncurses 編寫的非常基本的“GUI”。我遇到的問題是,當我直接登錄或通過 ssh 登錄時它工作正常,但是當二進製文件通過 init 啟動時,我無法訪問 ncurses 程式碼的功能。我認為這是因為我登錄的控制台與啟動二進製文件的控制台不同。所以我的問題是應用程序/守護程序是否有關聯的控制台,如果有,有沒有辦法將它轉移到另一個控制台?

如果沒有,我還有其他方法可以解決這個問題嗎?我在想也許強制執行自動登錄,然後讓應用程序通過登錄控制台啟動,這樣當監視器連接到設備時,至少可以訪問 GUI。

或者,還有更好的方法?

我不太確定我是否理解你的問題。我假設您的應用程序啟動了某種詛咒 GUI,並且您想要遠端登錄並且 - 以某種方式 - 連接到該 GUI(但應用程序已經在執行)。

我建議使用螢幕(http://www.gnu.org/software/screen/)在分離的“螢幕”上啟動應用程序(實際上是一個帶有簡單終端模擬器的偽 tty)。然後在登錄後,您的使用者可以使用“screen -D -r”或其變體附加到虛擬螢幕。

這就是您所說的“將其轉移到另一個控制台”

PS:另一種“正確”的做法可能是將服務(始終執行的部分)和 UI 分成 2 個單獨的程序。不過,這可能太麻煩了,因為它需要在這兩個過程之間發明某種 IPC。

引用自:https://unix.stackexchange.com/questions/85054