显然,syscall.Dup2
在ARM系统上不存在,syscall.Dup3
在达尔文(OSX)上不存在。例如,这意味着我可以在ARM上使用syscall.Dup3
,在其他平台上使用syscall.Dup2
。
我该怎么做?
答案 0 :(得分:5)
按照唯一的代码配置编写包装器源文件。
PS:我认为Windows不支持Dup2
也不支持Dup3
。
syscall_wrapper.go
// +build !windows
// +build !arm
// +build !arm64
package mypkg
import (
"syscall"
)
func Dup2(oldfd int, newfd int) {
syscall.Dup2(oldfd, newfd)
}
syscall_wrapper_arm.go
// +build !windows
// +build arm arm64
package mypkg
import (
"syscall"
)
func Dup2(oldfd int, newfd int) {
syscall.Dup3(oldfd, newfd, 0)
}
例如go build
使用的基本部分是// +build
部分。有关如何使用它的详细信息,请参见: