假设我正在调用write()并返回错误-8。如何检查这代表哪一个记录的错误返回值?
答案 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()
应该只返回最差-1
和errno
中的错误代码。
答案 2 :(得分:0)
正式它没有返回-8,而是一个错误代码。这些错误代码可以在手册中找到(例如:http://linux.die.net/man/2/write),您应该使用这些代码来验证一切是否正常。
所以,你会使用:
write(..);
if( errno == EFAULT ) { ...}
答案 3 :(得分:0)
答案 4 :(得分:0)
您不应该打印出返回值本身,而是strerror(return_value)
。您还可以查看man errno
以获取错误说明。