C 语言中 errno 的作用是什么?

推荐答案

在 C 语言中,errno 是一个全局变量,用于指示库函数调用过程中发生的错误。当某个库函数执行失败时,它会设置 errno 为一个特定的错误代码,以便程序可以通过检查 errno 来确定错误的具体原因。

本题详细解读

1. errno 的作用

errno 是 C 标准库中定义的一个全局变量,通常位于 <errno.h> 头文件中。它的主要作用是存储最近一次发生的错误代码。当库函数执行失败时,它们会将 errno 设置为一个特定的值,以指示错误的类型。

2. 如何使用 errno

在使用 errno 时,通常需要包含 <errno.h> 头文件。在调用可能失败的库函数后,可以通过检查 errno 的值来确定是否发生了错误以及错误的类型。

-- -------------------- ---- -------
-------- ---------
-------- ---------
-------- ----------

--- ------ -
    ---- ----- - ----------------------------- -----
    -- ----- -- ----- -
        ------------- ------- ----- ------ -----------------
    -
    ------ --
-

在上面的代码中,如果文件打开失败,fopen 会返回 NULL,并且 errno 会被设置为一个错误代码。通过 strerror(errno) 可以将错误代码转换为可读的错误信息。

3. errno 的常见错误代码

errno 的值通常是一些预定义的宏,例如:

  • EACCES:权限不足
  • ENOENT:文件或目录不存在
  • EINVAL:无效的参数
  • ENOMEM:内存不足

4. 注意事项

  • errno 的值只有在函数调用失败时才有效。如果函数调用成功,errno 的值可能是未定义的。
  • 在多线程环境中,errno 通常是线程局部的(thread-local),以避免不同线程之间的干扰。

通过合理使用 errno,程序可以更好地处理错误情况,并提供更详细的错误信息。

纠错
反馈