在“The C Programming Language”一书中,它说:
“当文件出现错误或文件结束时,库中的许多功能都会设置状态指示器 指标可以明确设置和测试。另外,整数表达式
errno
(声明 在<errno.h>
)中可能包含一个错误编号,提供有关最多的信息 最近的错误。“
我在哪里可以看到这些功能的列表?
答案 0 :(得分:6)
标准说明了errno
:
在程序启动时,errno的值为零,但任何库都不会将其设置为零 功能。无论是否存在错误,errno的值都可以通过库函数调用设置为非零,前提是在本国际标准的函数描述中没有记录errno的使用。
其中告诉我,任何图书馆功能都可以以任何方式使用errno
,除非:
errno
设置为0
请注意,该标准在脚注中建议如下:
因此,使用
errno
进行错误检查的程序应该在库函数调用之前将其设置为零,然后在后续库函数调用之前检查它。当然,库函数可以在进入时保存errno
的值,然后将其设置为零,只要在返回之前errno
的值仍然为零时恢复原始值。
正如其他答案所述,标准中没有设置errno
的函数也很常见。
答案 1 :(得分:5)
您应该假设任何函数都可以设置errno,而不仅仅是标准库中的那些。因此,清单会有点无意义。
答案 2 :(得分:1)
如果发生错误,几乎所有posix库函数都可以设置errno,即函数返回-1时。 一个例外是线程函数,因为从多个线程设置一个全局错误变量将是非常危险的。成功时返回0,否则返回错误代码(此代码与errno兼容,因此您可以使用strerror和perror函数)。
答案 3 :(得分:1)
@Adam,正如Neil所说,任何函数都可以针对errno.h进行编译并设置errno。根据定义,不可能列出以这种方式编译的所有实用程序以使用核心errno功能。
也就是说,有几种方法可以将错误报告给用户。使用errno只是一个。
答案 4 :(得分:0)
一个恰当的问题可能是什么是价值观
errno
可以得到每个人的意思。您可以在intro(2)
中看到它们。
答案 5 :(得分:-1)
您可以使用自己喜欢的编辑器和“在文件中查找...”来搜索包含errno
关键字的文件。