调用uname(2)后是否需要检查错误
根据手册页:
如果成功,则返回零。如果出现错误,则返回-1,并适当设置errno。
在错误标题下,
EFAULT buf无效。
是列出的唯一错误。
因此,我是否可以假设,如果给一个有效的uname缓冲区,struct utsname永远不会失败?
发布于 2014-12-28 23:01:55
不是的。
仅仅因为EFAULT是列出的唯一errno,并不意味着只要您传递有效的缓冲区,uname就永远不会失败。它可能会因为任何其他原因而失败。也就是说,如果uname的返回代码是-1,那么不管errno的值如何,它都失败了。
只有当函数/系统调用指示失败时,errno才有意义;它本身并不定义库函数/syscall的成功/失败。
https://stackoverflow.com/questions/27681446
复制相似问题