13.21 为什么调用 printf() 之后 errno 内有 ENOTTY?

如果 stdout 是终端, 很多 stdio 包都会对其行为进行细微的调整。为了做出判断, 这些实现会执行某些当 stdout 为终端时会失败的操作。尽管输出操作成功完成, errno 还是会被置为 ENOTTY。注意, 只有当函数报告错误之后检查 errno 的内容 才有意义。errno 在其它情况下也不保证为 0。

参考资料: [ISO, Sec. 7.1.4, Sec. 7.9.10.3]; [CT&P, Sec. 5.4 p. 73]; [PCS, Sec. 14 p. 254]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)