我有以下代码。
initscr();
while ((ch = getch()) != '#')
{
system("ls");
}
endwin();
问题是结果通常不会打印出来。 这就是它给我结果的方式:
project project.c shell.c test test1.c test2.c
Project shell Signal Labs test1 test2 text.txt
但是我希望结果如下:
我的意思是我希望它以这种方式格式化:
project project.c shell.c test test1.c test2.c
Project shell Signal Labs test1 test2 text.txt
我确定缺少某项功能或与initscr()
相关的内容。
答案 0 :(得分:0)
'系统' call写入标准输出,curses库写入相同的文件描述符,但是它们的输出可能没有以相同的方式缓冲,curses库另外设置输出终端模式以更改回车和换线工作方式。所以你真的不想以这种方式将两者合并......
您可以从命令中读取结果,然后使用curses打印 。这样的事情(参见手册页的Initialization部分):
initscr();
cbreak();
noecho();
while ((ch = getch()) != '#')
{
FILE *pp = popen("ls", "r");
if (pp != 0) {
while ((ch = fgetc(pp)) != EOF) {
addch(ch & 0xff);
}
pclose(pp);
}
}
endwin();