ENOSPC vs ENOMEM什么时候使用?

问题描述

Linux / Unix定义了大量相对相似的错误代码。是否有任何通常遵循的约定建议将哪些类型的错误绑定到哪些错误代码

比方说,我的函数有一些具有固定大小的任意容器(并且由于与实际RAM使用无关的任意原因而无法调整大小)。如果代码试图将太多对象推入容器,我应该返回ENOMEM还是ENOSPC? ENOSPC是专门用于持久性存储设备空间还是类似的东西?

解决方法

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

正确的程序正在以某种方式使用exit(3)(当Greenball ghost = loadImage("ghost.png")退出代码时,由crt0代码隐式调用),另请参见signal(7)和{ {3}}。使用graphit.lextern YYSTYPE* mylval; ,但也要查看main

的内部

也请阅读execve(2)Advanced Linux Programming

研究启发性的现有开源软件的源代码,包括man pagesGNU libcGNU coreutils

对于内核模块,另请参见GNU makekernel.org中的代码