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

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

“当文件出现错误或文件结束时,库中的许多function都会设置状态指示器。这些指示器可以显式设置和测试。此外,整数表达式errno (在声明)可能包含一个错误号提供有关最新错误的进一步信息。“

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

关于errno ,标准说这个:

程序启动时errno的值为零,但任何库函数都不会将其设置为零。 无论是否存在错误,errno的值都可以通过库函数调用设置为非零,前提是在本国际标准的函数描述中未记录errno的使用。

其中告诉我,任何库函数都可以以任何方式使用errno ,除非:

  • 它不能将errno0
  • 如果标准明确另有说明,它就无法做到它喜欢的事情

请注意,该标准在脚注中建议如下:

因此,使用errno进行错误检查的程序应该在库函数调用之前将其设置为零,然后在后续库函数调用之前检查它。 当然,库函数可以在输入时保存errno的值,然后将其设置为零,只要在返回之前errno的值仍然为零时恢复原始值。

如其他答案中所述,对于不在标准中的函数来说,设置errno也很常见。

您应该假设任何函数都可以设置errno,而不仅仅是标准库中的那些。 因此,清单有点无意义。

如果发生错误,几乎所有posix库函数都可以设置errno,即函数返回-1时。 一个例外是线程函数,因为从多个线程设置一个全局错误变量将是非常危险的。 它们在成功时返回0,否则返回错误代码(此代码与errno兼容,因此您可以在其上使用strerror和perror函数)。

@Adam,正如Neil所说,任何函数都可以针对errno.h进行编译并设置errno。 根据定义,不可能列出以这种方式编译的所有实用程序以使用核心errnofunction。

也就是说,有几种方法可以将错误报告给用户。 使用errno只是一个。

一个恰当的问题可能是errno可以获得的值以及它们各自的含义。 你可以在intro(2)看到它们。

您可以使用自己喜欢的编辑器和“在文件中查找…”来搜索包含errno关键字的文件。