C 标准本身并不需要大量使用 errno WRTstdio
函数;它指定ferror()
但仅说
7.13.10.3 ferror 函数ferror 函数测试stream 指向的流的错误指示符。当且仅当为流设置了错误指示符时,ferror 函数才返回非零值。
来自 C99 草案: http: //www.vmunix.com/~gabor/c/draft.html。在大多数情况下,使用的任何实际错误代码都是由实现定义的。
但是,Linux 上的 GNU C 库也符合 POSIX 规范:
http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm
在这种情况下,它们的定义要好得多。例如,如果您查看页面fopen
:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html
您将在Errors下看到很多详细信息,包括特定的 errno 代码。
同样,几乎所有普通 linux 系统上使用的 GNU C 库都符合 POSIX,因此您可以依靠该信息;)。那些(在线)POSIX 手册页通常也比标准的 linux 系统手册页更详细(同时阅读)。
WRT 到其他(非 POSIX)平台上的文件操作,它们将有自己的实现。不幸的是,这样的东西在标准 C 中并不是透明可移植的。不过,C++ 流确实具有更标准化的错误处理。