为啥 setupterm 会终止程序?

Posted

技术标签:

【中文标题】为啥 setupterm 会终止程序?【英文标题】:Why does setupterm terminate the program?为什么 setupterm 会终止程序? 【发布时间】:2011-02-28 16:04:18 【问题描述】:

这是《Beginning Linux Programming》一书中的示例程序:

#include #include #include #include 主函数() setupterm("未列出", fileno(stdout), (int *)0); printf("完成。\n"); 退出(0);

运行它,我得到了这个结果:

./badterm “未列出”:未知终端类型。

根据setupterm函数定义,它必须返回0:“在terminfo数据库中没有匹配的条目”。取而代之的是程序终止。为什么?

【问题讨论】:

【参考方案1】:

您似乎要求它这样做。来自我机器上的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(第三个)参数提供一个非空指针值。

【讨论】:

以上是关于为啥 setupterm 会终止程序?的主要内容,如果未能解决你的问题,请参考以下文章

为啥只有在 Windows 控制台程序中按 Ctrl+Z 时才会终止输入? [复制]

从 ASP.NET 启动进程 - 为啥进程会立即终止?

为啥我打印素数的代码会提前终止?

为啥 Environment.Exit() 不再终止程序?

为啥 MPI 程序以退出代码 134(信号 6)终止?

为啥在 iOS 9.3 中杀死/终止应用程序后后台位置不起作用