系统调用失败模式表或列表?

系统调用失败模式表或列表?

我想知道是否有系统调用失败模式的表格或列表。举几个例子: exit() 会因为系统内存不足而失败吗? open() 会因系统达到最大打开文件数限制而失败吗?系统调用会简单地超时吗?各种硬件故障在系统调用故障中的表现会是什么样子?

谢谢!

答案1

正如您可能已经猜到的那样,并不是每个系统调用都会发生每个错误。

如果您从 开始/usr/include/errno.h,您可能可以追踪清单常量,例如“EPERM”或“EINTR”。我在以下位置找到了它们:

/usr/include/asm-generic/errno-base.h/usr/include/asm-generic/errno.h

但在我看来,libc 的发行版或版本可能会有一些变化。

Linux 似乎非常擅长处理任何给定的系统调用都可能在该系统调用的手册页中显示的错误:man 2 read或者man 2 socket例如。对于可能仍然存在的各种 Unix 版本来说,传统上情况并非如此。我无法访问 *BSD 系统来检查现代 Unix 的情况。

相关内容