2011-12-01 67 views

回答

2

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

4

你会经常使用

man functionname 

或许

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

上失败成功返回0,非空,记录他们还成立errno大部分功能。您可以通过使用strerror功能(#include <string.h>

  • 看着errno.h

  • 得到errno全局变量

    • 的含义或使用便捷的辅助perror是打印错误基于strerror的消息和给出的前缀:

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

    很好,它并不在技术上需要一个全局变量。根据您的OS /库它可能是一个宏,一个ThreadLocal变量,既等等

  • +1

    ..或者'perror'? – 2011-12-01 14:08:59

    +0

    实际的定义在'/ usr/include/asm-generic/errno.h'和'/ usr/include/asm-generic/errno-base.h'中 - 当然是由'errno.h'拖入的。 –

    +0

    'perror'值得一提,但它超越了检查和发现:) –

    0

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

    所以,你可以使用:

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

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