นี่คือตัวอย่างโปรแกรมจากหนังสือ "Beginning Linux Programming":

#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" แทนที่จะเป็นเช่นนั้น โปรแกรมจะยุติลง ทำไม?

ตอบ

ดูเหมือนว่าคุณขอให้ทำอย่างนั้น จาก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พารามิเตอร์ (ที่สาม)