我有一个非常基本的ncurses程序来监控机器统计信息并启动远程xterms。它只是整天坐在窗户上,帮助我选择一台负载不重的机器。它工作正常,我非常喜欢它。但它真的很胖。我认为,它比它需要的要胖得多。
该计划基本如下:
void * run(void * task) {
// once per minute:
popen( /* stats checking command */ )
// save output to global var
pclose
}
int main() {
// setup ncurses with halfdelay
for ( /* each machine */ )
pthread_create(somethread, NULL, run, (void *)somestruct);
while ( ( c = getch() ) != 'q' )
for ( /* each machine */ )
// print machine stats
// maybe launch an xterm
// die gracefully
}
如上所述,它运作得很好。问题是,每个线程都将所有的ncurses baloney藏在私人内存中,导致一个非常胖的进程,带来了大量的浪费。
那么问题是:我如何重新编写或重新安排这个程序,以便每个pthread都不会带来所有不必要的ncurses东西?
附带问题:你必须真的把它卖给我,但有人知道比ncurses更好的方法吗?我希望终端窗口中的固定位置的统计数据,而不是滚动文本。