为什么 setupterm 会终止程序?
这是《Linux 编程入门》一书中的示例程序:
#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 数据库中没有匹配的条目”。相反,程序会终止。为什么?
This is sample program from "Beginning Linux Programming" book:
#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); }
Running it, I have this result:
./badterm 'unlisted': unknown terminal type.
According to setupterm function definition, it must return 0: "No matching entry in terminfo database". Instead of this, program terminates. Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来是你要求它这样做的。来自我机器上的
man setupterm
:据推测,如果您想自己处理任何错误返回,则必须为 errrret(第三个)参数提供非 NULL 指针值。
It looks like you asked it to do so. From
man setupterm
on my machine:Presumably, if you want to handle any error return yourself, you must supply a non-NULL pointer value for the
errret
(third) parameter.