我在哪里可以看到与errno交互的函数列表?

时间:2009-07-12 18:23:53

标签: c++ c error-handling standard-library errno

在“The C Programming Language”一书中,它说:

  

“当文件出现错误或文件结束时,库中的许多功能都会设置状态指示器   指标可以明确设置和测试。另外,整数表达式errno(声明   在<errno.h>)中可能包含一个错误编号,提供有关最多的信息   最近的错误。“

我在哪里可以看到这些功能的列表?

6 个答案:

答案 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关键字的文件。