繁体   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