【发布时间】:2023-01-03 03:44:18
【问题描述】:
我想每秒刷新一次屏幕。我正在与 ncurses 进行聊天。
到目前为止,我有以下功能:
void print_chat(char *chat) {
mvprintw(1, 1, "RPC Chat");
move(2, 1);
for (int i=0; i<CHAT_WIDTH; i++) {
addch('_');
}
move(CHAT_HEIGHT + 3, 1);
for (int i=0; i<CHAT_WIDTH; i++) {
addch('_');
}
mvprintw(CHAT_HEIGHT + 5, 1, "Enter message: ");
}
打印以下屏幕:
在主要功能中,我希望有一个循环,每 1 秒刷新一次屏幕,从服务器获取可能的新消息,并在该时间间隔内刷新屏幕,以便可以显示新消息(如果有的话)。我还想在刷新的同时读取用户输入。我需要线程吗?
到目前为止,我在主要功能中的尝试:
while (1) {
print_chat(chat);
refresh();
sleep(1);
chat = read_chat_from_server();
/*char l = getch(); --> This would block the loop, waiting for input...
}
我需要线程来实现这个吗?如果是这样,线程是否能够重印屏幕?还有其他方法可以解决这个问题吗?
【问题讨论】:
-
this question 可能有一些有用的想法。