gpt4 book ai didi

c - 随后使用 STDIN 和 STDOUT

转载 作者:行者123 更新时间:2023-11-30 17:32:51 24 4
gpt4 key购买 nike

我正在用 C 语言编写一个可以在终端中使用的聊天...

为了接收短信,我有一个线程会在 STDOUT 上打印该消息

另一个线程正在从标准输入读取...

问题是,如果在键入时将新消息打印到标准输出,它将在我键入的内容之间打印。

我研究了几个小时并尝试使用 GNU readline 来防止这个问题。我认为“重新显示”功能在这里会帮助我..但是如果我使用某些重新显示功能(它说ld: undefined symbol )而其他功能正常工作,我无法在Mac OSX上编译我的程序...我编译了这个程序一台 Ubuntu 机器,它可以工作......我真的不知道为什么......

尽管如此,如何才能使写入标准输出的所有内容都位于我当前正在编写的文本之上?

最佳答案

您基本上有两种解决方案。

第一个方法是使用一些东西来帮助您将屏幕分成不同的部分,正如 @Banthar 所说的 ncurses是标准溶液。

第二是写作和阅读同步。从网络读取数据并写入控制台的线程可能会简单地推迟消息,直到您从键盘输入某些内容为止,那时您可以通过一次写入所有消息来简单地刷新消息缓冲区。注意:此解决方案可能会导致缓冲区溢出,您可能会忘记太旧的消息或在缓冲区满时刷新缓冲区。

关于c - 随后使用 STDIN 和 STDOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23981656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com