2010-06-07 9 views
2

Это пример программы из "Начало Linux Программирование" книги:Почему setupterm завершает работу программы?

 
#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 ». Вместо этого программа завершается. Зачем?

ответ

3

Похоже, вы попросили его сделать это. Из 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. 

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

+0

Спасибо, жду 8 минут, чтобы принять ответ :) –