2010-06-07 131 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(第三個)參數的非NULL指針值。

+0

謝謝,等待8分鐘接受答案:) – 2010-06-07 11:57:37