C/C++ ncurses 冻结
C/C++ ncurses freeze
我目前正在试验一个小型 ncurses 应用程序。
应该 做的是通过串行接收消息,该消息用 : 分隔,然后它应该在单独的 windows 中显示不同的值。
我用 strtok "split" 它。
我的一切正常,除了 window 文本更新,它正确地更新了一个 window,而我一更新下一个 window 它就冻结了。
现在,我用这个尝试了很多不同的东西,并且不得不恢复到一种非常粗糙的方式只是为了简单化它。请看这段代码:
while(1){
read (fd, in,20);
s = strtok(in,":");
while (s != NULL)
{
mvwprintw(winrpm,1,1,s);
s = strtok(NULL, ":");
mvwprintw(wintrans,1,1,s);
}
refresh();
wrefresh(winrpm);
wrefresh(wintrans);
//refresh();
}
如果我删除第二个 mvwprintw,一切都按预期工作,但有了那个,它在第一次更新后冻结。
有什么想法吗?我知道我应该包括我所有的代码,但它的 98% ncurses window 图纸和颜色等等..
你可以试试这个。如果第一个 strtok 不为 NULL,则将标记打印到 winrpm
,while 将尝试获取另一个标记,如果成功,将打印标记到 winrpm
和 wintrans
.
while(1){
read (fd, in,20);
if ( ( s = strtok ( in, ":")) != NULL) {
mvwprintw ( winrpm, 1, 1, s);
while ( ( s = strtok ( NULL, ":")) != NULL) {
{
mvwprintw ( winrpm, 1, 1, s);
mvwprintw ( wintrans, 1, 1, s);
}
}
refresh();
wrefresh(winrpm);
wrefresh(wintrans);
}
我目前正在试验一个小型 ncurses 应用程序。
应该 做的是通过串行接收消息,该消息用 : 分隔,然后它应该在单独的 windows 中显示不同的值。 我用 strtok "split" 它。
我的一切正常,除了 window 文本更新,它正确地更新了一个 window,而我一更新下一个 window 它就冻结了。 现在,我用这个尝试了很多不同的东西,并且不得不恢复到一种非常粗糙的方式只是为了简单化它。请看这段代码:
while(1){
read (fd, in,20);
s = strtok(in,":");
while (s != NULL)
{
mvwprintw(winrpm,1,1,s);
s = strtok(NULL, ":");
mvwprintw(wintrans,1,1,s);
}
refresh();
wrefresh(winrpm);
wrefresh(wintrans);
//refresh();
}
如果我删除第二个 mvwprintw,一切都按预期工作,但有了那个,它在第一次更新后冻结。
有什么想法吗?我知道我应该包括我所有的代码,但它的 98% ncurses window 图纸和颜色等等..
你可以试试这个。如果第一个 strtok 不为 NULL,则将标记打印到 winrpm
,while 将尝试获取另一个标记,如果成功,将打印标记到 winrpm
和 wintrans
.
while(1){
read (fd, in,20);
if ( ( s = strtok ( in, ":")) != NULL) {
mvwprintw ( winrpm, 1, 1, s);
while ( ( s = strtok ( NULL, ":")) != NULL) {
{
mvwprintw ( winrpm, 1, 1, s);
mvwprintw ( wintrans, 1, 1, s);
}
}
refresh();
wrefresh(winrpm);
wrefresh(wintrans);
}