#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, после открытия и закрытия термина один раз, он может вернуться к нормальному циклу, но когда я нажимаю клавишу ввода, запрос не будет выравниваться по левой стороне, он будет выглядеть так,
user@linux>
user@linux>
user@linux>
2, я могу снова ввести «open», чтобы снова открыть новый термин, но новый термин все еще находится в том же местоположении, что и термин, созданный, когда я вводил «open» в первый раз,
на самом деле, каждый раз, когда я вводю open, термин будет создаваться в одном и том же месте, что означает, что команда, стоящая за first open, исчезнет.