簡體   English   中英

在終端內隔離stdin和stdout

[英]Isolating stdin and stdout within a terminal

我正在為C系統類項目開發一個CLI程序,它需要在保持命令提示符的同時顯示傳入的文本。 單獨留下,傳入的文本將通過任何嘗試鍵入的內容進行查看。 在其他應用程序中,我看到輸入文本打印在提示本身上方(或下方)。 有沒有辦法在ANSI轉義中實現這個? ncurses似乎有點矯枉過正。

您可以打印\\r來刪除提示:它會將光標返回到當前行的開頭。 然后,您可以打印輸出,然后打印一些空格以清除任何剩余的輸入字符,換行符,並重新打印提示。

使用ANSI序列或終端專用庫,您可以做更多,但我認為只有使用ASCII才能可靠地完成。 當然,除了打印242個空行以重繪整個屏幕外。

編輯:對不起,我沒有正確回答ANSI部分。 使用光標移動控制代碼和現有字符上的打印空間,您幾乎可以執行任何操作,並且有一些便利操作可以幫助您,例如“刪除行”。 但請記住,Windows不能與ANSI post XP一起使用,並且其他系統都不能保證。

首先,如果要在打印時保持提示,則不能使用scanf之類的東西。 您必須攔截鍵盤事件或使用非等待方法來獲取輸入。 然后,您可以獲得行的終端數(n)並打印輸出的最后n-1行,然后提示。

MY2C

暫無
暫無

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

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