8 在许多UNIXen上,syscall的约定是:如果发生错误,它们将返回取反的错误代码;如果成功,则返回实际值。 在用户空间一侧,将其转换-1为正错误代码为的错误errno,如果成功,则为实际值。 之所以需要双重使用返回值,是因为用这种语言进行多次返回很麻烦,因为您必须求助于传递输出参数来保存最终的错误。 — 拉斯·维克伦德 source