2010-06-07 6 views
2

C'est un programme exemple de livre "Début Linux Programmation":Pourquoi setupterm termine le programme?

 
#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); 
} 

exécution, j'ai ce résultat:

 
./badterm 
'unlisted': unknown terminal type. 

Selon la définition de la fonction setupterm, il doit retourner 0: « Aucune correspondance entrée dans la base de données terminfo ". Au lieu de cela, le programme se termine. Pourquoi?

Répondre

3

Il semble que vous l'ayez demandé. De man setupterm sur ma machine:

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. 

On peut supposer que si vous voulez gérer toute erreur vous retourner, vous devez fournir une valeur de pointeur non NULL pour le paramètre errret (troisième).

+0

Merci, en attente de 8 minutes pour accepter la réponse :) –

Questions connexes