### Question 12.24

Why does `errno` contain ENOTTY after a call to `printf`?

Many implementations of the stdio package adjust their behavior slightly if `stdout` is a terminal. To make the determination, these implementations perform some operation which happens to fail (with ENOTTY) if `stdout` is not a terminal. Although the output operation goes on to complete successfully, `errno` still contains ENOTTY. (Note that it is only meaningful for a program to inspect the contents of `errno` after an error has been reported.)

References: ANSI Sec. 4.1.3, Sec. 4.9.10.3
ISO Sec. 7.1.4, Sec. 7.9.10.3
CT&P Sec. 5.4 p. 73
PCS Sec. 14 p. 254

Read sequentially: prev next up top

This page by Steve Summit // Copyright 1995 // mail feedback