在包syscall中包装所有syscall-s,就像libc所做的那样,如果我理解它们的话。
我研究了几种语言,
不需要提及脚本语言,例如lua,ruby或python,它们需要可移植,因此它们需要libc作为POSIX的实现。
我最近没有使用锈,但也有一些人说使用libc也生锈了。
那么,golang为什么决定首先实现一个系统调用包。它不可移植,移植到每个内核,甚至同一内核的每个主要版本都需要更多人。
因为Go管理由Go Runtime管理的goroutine中的进程,它是用C语言编写的,并且在链接阶段静态链接到编译的用户代码。由于go使用自己的运行时不直接在OS中管理其系统调用,因此它实现了自己的系统调用包。