2011-12-01 66 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以獲取錯誤描述。