Как использовать OS или специфичный для Arch код в Go - PullRequest
2 голосов
/ 21 апреля 2019

Очевидно, syscall.Dup2 не существует в системах ARM, а syscall.Dup3 не существует в darwin (OSX). Это означает, что я мог бы использовать syscall.Dup3 на ARM и syscall.Dup2 на других платформах, например.

Как бы я это сделал?

1 Ответ

5 голосов
/ 21 апреля 2019

Записать исходный файл оболочки для уникальной конфигурации кода.

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 часть,Подробную информацию о том, как это использовать, можно найти здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...