簡體   English   中英

如何創建控制台終端?

[英]How to create a console terminal?

從哪里開始為我的C ++程序創建控制台?

我需要一個最低限度的控制台來啟動和管理控制台應用程序,我之所以需要它是因為我需要將所有內容打包成1個可執行文件並創建和控制我的小環境。

使用術語“控制台”我只是指一個終端來運行我的程序,僅此而已,僅此而已, 我不希望我的控制台與底層系統接口 ,只關心我的控制台應用程序。

所以我的問題是:給定一個C ++應用程序或一個命令行解釋器,創建一個能夠將自己與自己的應用程序接口並報告和管理通常輸入(std :: cout,特殊字符)的終端需要什么?像鈴鐺,用戶輸入的文字等等)?

我認為對於“一個答案”來說,這是一個太大的問題。

該問題有三個組成部分:

  1. 從代碼運行另一個應用程序。
  2. 捕獲所述應用程序的輸出。
  3. 在控制台類型窗口中顯示輸出。

我相信每種主要類型的平台至少有1和2個明顯不同,至少在Windows與Symbian與Linux / Unix類型平台上是不同的。 我相信,在很大程度上,Android平台可以通過與Linux相同的方法實現這一目標。

第三部分,除了模擬VT100或ANSI終端的所有復雜性之外(這是非常重要的,因為有大量不同的轉義碼可以解析和解釋,但是你可能只需要實現六個就可以逃脫左右開始)。

我希望,除了“平台特定代碼”之外,這是一個需要幾千行代碼的項目,如果你知道從哪里開始(也就是說,你熟悉fork(), execl()等Linux或其他操作系統中的等價物,如果stdinstderrstdout使用dup2()和類似函數熟悉重定向,再次預留操作系統特定名稱,你可以在幾周內完成大致工作。如果你沒有關於這些事情的想法,你將不得不首先學習如何使用這些功能。

當然,進行終端仿真,例如“在這里畫一行文字”,“在第X行插入空行”,“從這個位置清除屏幕”或“清除剩余行”等等都需要相當數量工作涵蓋所有不同的變種和選項。 特別是如果您希望在可變尺寸顯示器上執行此操作,而不是支持原始VT100終端的“固定80列和25行”。 而且我假設您已經編寫了代碼來在OpenGL或OpenVG中繪制基本文本(OpenVG本身是否支持文本,或者您必須將其作為“繪制位圖” - 我不記得它是如何工作的 - 我不知道在Symbian Graphics中處理文本的人之一,所以我從未真正關心它是如何工作的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM