上回讲Goroutine状态变换的时候,遗留了一部分关于Syscall处理的内容,这次打算把Go语言对Syscall的处理机制系统的总结一下,放在今天这篇文章中。Go 语言库对Syscall的封装我们知道Go是一门面向系统级开发的Native编程语言,与C/C++ 类似,Go的编译器会直接将程序编译、链接成本地可执行文件。理论上,它可以完成任何C/C++语言能完成的。作为支撑该特性的重要方面,Go以标准库形式提供了syscall包,用来支持OS级系统调用。首先,Go对各种系统调用接口进行了封装,提供给用户一组Go语言函数,方便在程序中直接调用,如:funcRead(fdint,p[]byte)(nint,errerror)funcWrite(fdint,p[]byte)(nint,errerror)同时,Go还通过以下函数提供了对Syscall的直接调用支持:funcSyscall(trap,a1,a2,a3uintptr)(r1,r2uintptr,errErrno)funcSyscall6(trap,a1,a2,a3,a4,a5,a6uintptr)(r1,r2uintptr,errErrno)funcRawSyscall(trap,a1,a2,a3uintptr)(r1,r2uintptr,errErrno)funcRawSyscall6(trap,a1,a2,a3,a4,a
...
继续阅读
(239)