ncurses основной пример-в debug я получаю: "ошибка открытия терминала: неизвестно."

делая некоторые основные примеры на библиотеках ncurses, я получаю некоторые проблемы.

На самом деле, я не получаю то, что ожидаю (сообщение напечатано), и идя в отладку, из eclipse, я получаю (в области консоли) "ошибка открытия терминала: неизвестно."

следующий код:

#include <unistd.h>
#include <stdlib.h>
#include <ncurses.h>


int main() {

    initscr();

    move(5,15);
    printw("%s", "Hello world!");
    refresh();

    endwin();
    exit(EXIT_SUCCESS);
}

параметры компилятора, как указано в консоли Eclipse в команде "Build project":

make all 
Building file: ../source/Curses_01.c
Invoking: GCC C Compiler
gcc -Incurses -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"source/Curses_01.d"     -MT"source/Curses_01.d" -o"source/Curses_01.o" "../source/Curses_01.c"
Finished building: ../source/Curses_01.c

Building target: Curses_01
Invoking: GCC C Linker
gcc  -o"Curses_01"  ./source/Curses_01.o   -lcurses
Finished building target: Curses_01

спасибо всем заранее!

1 ответов


вы печатаете строку. Проблема в том, что программа выходит немедленно. Это очистит экран и восстановит его в прежнем состоянии. Это происходит очень быстро, конечно, так что вы ничего не увидите.

решение состоит в том, чтобы дождаться нажатия клавиши перед выходом. Вы можете сделать это с помощью getch():

/* ... */
refresh();
getch();
endwin();
exit(EXIT_SUCCESS);

проблема Eclipse возникает из-за терминала, представленного Eclipse для приложения. NCurses не узнает его. Я не использую Eclipse, поэтому Я не знаю точно, как это сделать, но вы должны искать некоторые настройки, которые позволяют запускать приложение внутри полного терминала (например, в xterm, Konsole, Gnome Terminal и т. д.)