在C中同时读写(stdin,stdout)

时间:2013-05-05 15:12:42

标签: c stdout stdin simultaneous

我正在尝试编写聊天客户端和服务器,客户端应该能够从服务器打印消息,同时还可以在控制台上编写内容。

所以我创建了一个应该读取用户输入的pthread,主线程从服务器打印了messeges。但是当我输入内容并且在收到信息时,我输入的文本会在控制台上向上推。我该如何解决这个问题?

例如: 我正在输入“abcdef”,然后当我从服务器获得一个消息(但还没有完成输入)时,它将如下所示:

ABCDEF [Chatuser1]:喂

2 个答案:

答案 0 :(得分:1)

使用信号量或互斥量等同步技术在多线程程序中同步输入和输出

答案 1 :(得分:0)

我真的建议在GUI中使用两个单独的编辑框元素而不是在控制台中执行类似的操作。

如果您仍想在控制台中执行此操作,则需要直接修改控制台缓冲区。

每次出现新的输出消息时,都必须备份当前输入消息,以便您可以保存写入控制台然后执行一些自定义滚动并再次添加输入消息。需要线程同步来防止缓冲区中输入和输出的混合。

我认为您也不会解决自定义键处理问题,因为否则您无法访问部分键入的输入。