Я пытаюсь использовать os.StartProcess
, чтобы начать процесс с аргументов на машине FreeBSD. Попробовав несколько разных способов добавления правильных аргументов и всегда получая ошибки, я создал это простое доказательство концепции.Как добавить аргументы в os.StartProcess на FreeBSD?
package main
import (
"log"
"os"
)
func main() {
command := "/usr/local/sbin/pkg"
args := []string{"install"}
procAttr := new(os.ProcAttr)
procAttr.Files = []*os.File{os.Stdin, os.Stdout, os.Stderr}
if process, err := os.StartProcess(command, args, procAttr); err != nil {
log.Println(err.Error())
} else {
log.Printf("%d", process.Pid)
}
}
Идея заключается в том, что если система стартует только pkg
он будет жаловаться на недостающие аргументы, но если он начинает pkg install
он предложит помощь для команды install
. Смотрите ниже:
pkg: not enough arguments
Usage: pkg [-v] [-d] [-l] [-N] [-j <jail name or id>|-c <chroot path>|-r <rootdir>] [-C <configuration file>] [-R <repo config dir>] [-o var=value] [-4|-6] <command> [<args>]
For more information on available commands and options see 'pkg help'.
Или
Usage: pkg install [-AfInFMqRUy] [-r reponame] [-Cgix] <pkg-name> ...
For more information see 'pkg help install'.
Когда я использую код идти над ним будут жалобы об отсутствии аргументов, так почему мой аргумент «установить» не добавляется к команде, и как исправить мой код?
Это очень непрозрачно. Сначала я попытался использовать 'os/exec', но он дал мне« код ошибки 1 »каждый раз, что я предположил как« аргумент ошибки ». Затем я перешел к исходному коду, чтобы узнать, что это может означать, и закончил работу с 'os.StartProcess'. Возможно, 'os/exec' также ожидает имя и снова то же имя, что и первый аргумент? – Bazzz