在Linux下,如何检查C中数字返回值的含义?
假设我调用write(),它返回错误-8。如何检查这代表哪一个记录的错误返回值?查看手册页。(注意,尽管在Linux下,如何检查C中数字返回值的含义?,c,linux,error-handling,C,Linux,Error Handling,假设我调用write(),它返回错误-8。如何检查这代表哪一个记录的错误返回值?查看手册页。(注意,尽管write()在最坏情况下只能返回-1和errno中的错误代码)。您通常使用 man functionname 或许 man -S2 functionname # specify other section (2, 3, 5, 7) 大多数函数在成功时返回0,在失败时返回非null,并记录它们还设置了errno。您可以获得errno全局变量1的含义 通过查看errno.h 使用s
write()
在最坏情况下只能返回-1
和errno
中的错误代码)。您通常使用
man functionname
或许
man -S2 functionname # specify other section (2, 3, 5, 7)
大多数函数在成功时返回0,在失败时返回非null,并记录它们还设置了errno
。您可以获得errno
全局变量1的含义
- 通过查看
errno.h
- 使用
功能(strerror
)#include
- 或者使用方便的助手
,根据peror
和给定的前缀打印错误消息:strerror
perror("oops, popen failed with: ");
从形式上讲,它不是返回-8,而是一个错误代码。这些错误代码可以在手册中找到(例如,此处:),您应该使用这些代码来验证是否一切正常 因此,您可以使用:
write(..);
if( errno == EFAULT ) { ...}
尝试使用“”和“”。您不应该打印返回值本身,而应该打印返回值(
strerror(return\u value)
)。您还可以查看man errno
以了解错误描述。实际的定义在:/usr/include/asm generic/errno.h
和/usr/include/asm generic/errno base.h
-当然是由errno.h
拖入的。perror
值得一提,但它不仅仅是检查和查找:)@sehe,当问题被标记为“linux”时就不会了。@BrettHale:嗯?这仍然取决于平台,即使问题被标记为:)@Vlad Lazarenko:peror
添加了冒号。如果像这样在参数中放一个,实际输出中将有两个<代码>oops,popen失败,出现::一些错误