Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux下,如何检查C中数字返回值的含义?_C_Linux_Error Handling - Fatal编程技术网

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

在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(),它返回错误-8。如何检查这代表哪一个记录的错误返回值?

查看手册页。(注意,尽管
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失败,出现::一些错误