这是我的代码:
#include <ncurses.h>
#include <string.h>
int main() {
char str[120];
char c;
while (1) {
printf("%s", ">");
scanf("%s", str);
if (!strcmp(str, "open")) {
initscr();
c=getch();
endwin();
printf("from curses window %c\n",c);
}
printf("%s\n", str);
}
return 0;
}
我有一个while(1)
循环,始终打印从屏幕上获取的内容。
如果输入“open”,它将打开一个curses窗口,并获得char
。之后它将退出curses窗口(endwin()
),并且仍然应该在while(1)
循环中。
但我的问题是,在致电endwin()
后,它不会回到正常的printf()/scanf()
循环。
答案 0 :(得分:0)
#include <stdio.h>
#include <curses.h>
#include <term.h>
#include <string.h>
#include <stdlib.h>
int main() {
char str[120];
char c;
FILE *file_id;
while (1) {
printf("%s", ">");
scanf("%s", str);
if (!strcmp(str, "open")) {
file_id = fopen("/dev/tty", "r+");
SCREEN *termref = newterm(NULL, file_id, file_id);
//cbreak();
echo();
keypad(stdscr, TRUE);
getstr(str);
delscreen(termref);
printf("from curses window %s\n", str);
}
printf("%s\n", str);
}
return 0;
}
现在源代码升级到此,仍然有两个问题
1,打开和关闭一个术语后,它可以回到正常循环,但是当我按下回车键时,promt将不会在左侧对齐,它会是这样的,
user@linux>
user@linux>
user@linux>
2,我可以再次键入“打开”,再次打开一个新术语,但新术语仍然与我第一次输入“打开”时创建的术语相同, 实际上,每次输入打开时,都会在同一个地方创建一个术语,这意味着首次打开后的命令将会消失。