Linux系统调用时要求在出错时返回-EINVAL。为什么要有负号?应用程序是怎么得到EINVAL的?

Linux系统调用时要求在出错时返回-EINVAL。为什么要有负号?应用程序是怎么得到EINVAL的?,第1张

UNIX中对系统API调用时如果返回0表示函数成功执行,返回-1则表示函数执行失败,通过设置errno这个全局变量来表示失败原因 负号 是因为分配给他的 内核用正数 应用用负的

rc应该是return code的意思,将函数返回值rc初始化为-EINVAL,EINVAL由POSIX.1规范中的一个宏,一般通过包含C标准头文件errno.h,表示参数无效(invalid argument),在VC中errno.h中定义如下:#define EINVAL 22源于UNIX对错误的处理,UNIX中对系统API调用时如果返回0表示函数成功执行,返回-1则表示函数执行失败,通过设置errno这个全局变量来表示失败原因,这样系统就定义了一些错误码,Linux上shell中执行man errno可得到全部的错误码。其中就有一个EINVAL表示函数执行时,传递过来的参数无效(比如数组长度为负等)。这些错误码都是定义的正值,另一种错误返回方式就是通过返回不同的值来表征错误的类型或程序退出的状态,典型的有进行IO时成功读取了多少字节或者成功写了多少字节,返回成功读或写的字节数。通过返回负数表示执行失败,这时我们可以通过返回不同的负值表征错误的类型,就有了rc = -EINVAL即在正的错误码前加一个负号,在错误处理时当返回值小于0时,我们就继续检测返回值的错误类型


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7090567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存