为什么某些 POSIX 系统调用 return 整数而不是布尔值?

Why do certain POSIX system calls return an integer instead of a boolean?

POSIX.1-2017 规范的最新版本中,某些系统调用,如 link()/unlink()access()chmod() return 0(成功)或 -1(不成功)。

在那种情况下,return a boolean 在语义上不是更正确吗?

如果我将 return 类型从 int 更改为 boolean,它仍然是 POSIX-compliant 吗?

我认为在所有 return 整数值函数中具有相似的 return 类型已经完成。否则程序员应该每次检查该函数是 returning 一个 int 还是一个 boolean.

最初 bool 甚至不是 C 中的类型:我不知道它也是一种向后兼容的选择。

在某些情况下,您甚至没有选择:以以下示例为例:

int fflush(FILE *fp) Returns: 0 if OK, EOF on error

int fclose(FILE *fp); Returns: 0 if OK, EOF on error

int atexit(void (*func)(void)) Returns: 0 if OK, nonzero on error

EOF是一般定义为-1的宏,但不保证。在其他一些情况下,您想指定错误