调用uname(2)
后是否有必要检查错误?
根据手册页:
成功时,返回零。出错时,返回-1,错误是 适当地设定。
并在 ERRORS 标题下
EFAULT buf无效。
是列出的唯一错误。
因此,如果给出有效的uname
缓冲区,我可以假设struct utsname
永远不会失败吗?
答案 0 :(得分:0)
没有。
仅仅因为EFAULT
是唯一列出的errno
,并不意味着uname
只要您传递有效的缓冲区就永远不会失败。它可能因任何其他原因而失败。即如果uname
的返回代码为-1
,则无论errno
的值如何都会失败。
errno
仅在函数/系统调用指示失败时才有意义;它本身并不定义库函数/系统调用的成功/失败。