我正在尝试用c ++实现htop(系统单调)。
所以我使用ncurses刷新终端。
我需要每5秒获取一次新信息,例如,我使用循环来实现这一点。
while (42)
{
key = std::cin.get();
std::cout << key;
this->gereEvent(key);
std::cout << i<< std::endl;
if (i == 500000000)
{
std::cout << "test"<< std::endl;
// fputs(tgetstr((char *)"cl", 0), stdout);
this->refresh();
i = 0;
}
i++;
}
但问题是cin.get()停止循环.. 我不能做一个线程eitheir因为std :: thread需要c ++ 11。
您知道我该怎么做吗?
答案 0 :(得分:3)
您需要轮询键盘事件。这可以在getch
的ncurses中完成。
#include<stdio.h>
#include<curses.h>
#include<unistd.h>
int main ()
{
int i=0;
initscr(); //in ncurses
timeout(0);
while(!i)
{
usleep(1);
i=getch();
printw("%d ",i);
if(i>0)
i=1;
else
i=0;
}
endwin();
printf("\nhitkb end\n");
return 0;
}