如何在Linux下检查C中数值返回值的含义?

时间:2011-12-01 14:03:33

标签: c linux error-handling

假设我正在调用write()并返回错误-8。如何检查这代表哪一个记录的错误返回值?

5 个答案:

答案 0 :(得分:4)

您通常使用

  man functionname

或者

  man -S2 functionname # specify other section (2, 3, 5, 7)

大多数成功返回0的函数,失败时返回非空,文档也设置为errno。你可以得到errno 全局变量的含义 1

  • 查看errno.h
  • 使用strerror函数(#include <string.h>
  • 或使用方便的帮助器perror根据strerror打印错误消息并给出前缀:

     perror("oops, popen failed with: ");
    

<子> 1 好吧,从技术上讲,它不需要是一个全局变量。根据您的操作系统/库,它可能是一个宏,一个threadlocal变量,等等......

答案 1 :(得分:2)

查找strerror联机帮助页。 (请注意,虽然write()应该只返回最差-1errno中的错误代码。

答案 2 :(得分:0)

正式它没有返回-8,而是一个错误代码。这些错误代码可以在手册中找到(例如:http://linux.die.net/man/2/write),您应该使用这些代码来验证一切是否正常。

所以,你会使用:

 write(..);
if( errno == EFAULT ) { ...}

答案 3 :(得分:0)

尝试“strerror”和“errno”。

答案 4 :(得分:0)

您不应该打印出返回值本身,而是strerror(return_value)。您还可以查看man errno以获取错误说明。