Почему setupterm завершает программу? - PullRequest
2 голосов
/ 07 июня 2010

Это пример программы из книги «Начало программирования на Linux»:

#include <stdio.h>
#include <term.h>
#include <curses.h>
#include <stdlib.h>

int main()
{
    setupterm("unlisted", fileno(stdout), (int *)0);
    printf("Done.\n");
    exit(0);
}

Запустив его, я получил такой результат:

./badterm 
'unlisted': unknown terminal type.

Согласно определению функции setupterm, он должен возвращать 0: «Нет соответствующей записи в базе данных terminfo». Вместо этого программа завершается. Почему?

1 Ответ

3 голосов
/ 07 июня 2010

Похоже, вы просили это сделать.Начиная с man setupterm на моей машине:

  If errret is null, setupterm prints an error message  upon  finding  an
  error and exits.  Thus, the simplest call is:

        setupterm((char *)0, 1, (int *)0);

  which uses all the defaults and sends the output to stdout.

Предположительно, если вы хотите устранить любую ошибку, вернитесь самостоятельно, вы должны указать значение указателя, отличное от NULL, для errret (третий) параметр.

...