我正在爲我的系統類項目開發一個CLI程序,它需要在維護命令提示符時顯示傳入文本。單獨留下,即將到來的文字將通過任何人嘗試輸入。在其他應用程序中,我看到傳入的文本打印在提示本身的上方(或下方)。有沒有辦法在ANSI轉義中實現這個? ncurses看起來像是矯枉過正。在終端內隔離stdin和stdout
3
A
回答
2
您可以打印\r
來清除提示:它會將光標返回到當前行的開頭。然後,您可以打印輸出,然後輸入一些空格來清除所有剩餘的輸入字符,換行符並重新打印提示。
使用ANSI序列或特定於終端的庫可以實現更多功能,但是我認爲只有使用ASCII才能可靠地進行這些操作。當然,除了打印242空白行來重畫整個屏幕。
編輯:對不起,我沒有正確回答ANSI部分。使用光標移動控制代碼和現有字符的打印空間,您幾乎可以做任何事情,並且有一些便利操作可以幫助您,例如「刪除行」。但請記住,Windows不能很好地發揮w/ANSI post XP,其他系統也不能保證。
0
首先,如果要在打印時保持提示,則不能使用諸如scanf之類的東西。您必須攔截鍵盤事件或使用非等待方法來獲取輸入。然後你可以得到行的終端數(n)並打印輸出的最後n-1行,然後提示。
my2c
相關問題
- 1. Stdin和Stdout
- 2. 在終端着色STDIN
- 3. 如何測試stdin和stdout?
- 4. 記錄過程'STDIN和STDOUT
- 5. 控制管道StdIn和StdOut
- 6. 的Java Webstart的stdin和stdout
- 7. 在bash中終止stdout到終端
- 8. LLVM stdin/stdout/stderr
- 9. Python Threading stdin/stdout
- 10. 在.Net中重定向stdin和stdout
- 11. stdin,stdout和stderr在?之間共享?
- 12. C在bash中讀入:stdin和stdout
- 13. Erlang讀stdin寫stdout
- 14. Pascal StdIn/StdOut管道
- 15. 每個進程是否有stdin stdout stderr定義爲鍵盤,終端等?
- 16. 通過tcsetattr(fd .....)設置終端屬性時,fd可以是stdout還是stdin?
- 17. 只允許應用stdin,stdout和stderr
- 18. 是stdin,stdout和stderr文件嗎?
- 19. 實時流stdout和stdin與websocket
- 20. subprocess.run管理可選stdin和stdout
- 21. 如何抽象stdin/stdout和文件?
- 22. 將Stdin和Stdout重定向到文件
- 23. 端口與docker內部的bazel隔離
- 24. 將stdin和stdout重定向到stdin首先關閉的位置
- 25. C++從stdin和stdout讀入內容。此外運算符超載
- 26. 將tar轉換爲stdout/stdin
- 27. stdin stdout的記錄器
- 28. stdout從python到stdin java
- 29. stdin,stdout,stderr如何關閉?
- 30. 壓縮在中隔離RAR壓縮包Linux終端