...
Many implementations of the stdio
package adjust their behavior slightly if stdout
is a terminal. To make the determination, these implementations perform some operation that fails (with ENOTTY
) if stdout
is not a terminal. Although the output operation goes on to complete successfully, errno
still contains ENOTTY
. This behavior can be mildly confusing, but it is not strictly incorrect because it is only meaningful for a program to inspect the contents of errno
only after an error has been reported. More precisely, errno
is meaningful only meaningful after a library function that sets errno
on error has returned an error code.
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
...
...
ISO/IEC 9899:2011 Section 6.3.1.1, "Boolean, characters, and integers," Section 7.1.4, "Use of library functions," and Section 7.21.10.3, "The ferror
function"
...
Bibliography
[Horton 1990] | Section 14, p. 254 |
[Koenig 1989] | Section 5.4, p. 73 |
...