ENOSPC vs ENOMEM 什么时候使用哪个?

ENOSPC vs ENOMEM when to use which?

Linux/Unix 定义了很多相对相似的错误代码。是否有任何普遍遵循的约定建议应将哪些类型的错误绑定到哪些错误代码?

假设我的函数有一些固定大小的任意容器(并且由于与实际 RAM 使用无关的任意原因无法调整大小)。如果代码试图将太多对象推送到容器中,我应该选择 return ENOMEM 还是 ENOSPC? ENOSPC 是否专门用于持久性存储设备 space 或类似的东西?

错误代码不是程序返回的,而是函数返回的。参见 syscalls(2) and errno(3) with intro(3)

正确的程序正在以某种方式使用 exit(3) (implicitly called by crt0 code when main is returning an exit code) but see also signal(7) and execve(2)。使用 EXIT_SUCCESSEXIT_FAILURE,但也要查看 /usr/include/sysexits.h

另请阅读Advanced Linux Programming and man pages

学习现有开源软件的源代码,包括GNU libc, GNU coreutils, GNU make.

对于内核模块,另请参阅 kernel.org and kernelnewbies.org

中的代码