Как запустить бинарные файлы в программе GoLang?
Я хочу выполнить двоичные файлы в программе GoLang.
Вот мой код:
package main
import (
"fmt"
"os/exec"
)
func main() {
output, _ := exec.Command("/home/user/Golang/bin/hello").Output()
fmt.Println(output)
}
Но я получаю вывод как: []
Заранее спасибо.
2 ответа
Решение
Когда я смотрю на источник exec.Command()
не возвращает ошибку, а только возвращает Cmd
который является структурой в пакете exe
: источник
....
func Command(name string, arg ...string) *Cmd {
cmd := &Cmd{
Path: name,
Args: append([]string{name}, arg...),
}
if filepath.Base(name) == name {
if lp, err := LookPath(name); err != nil {
cmd.lookPathErr = err
} else {
cmd.Path = lp
}
}
return cmd
}
....
Я успешно запустил бинарный файл, используя этот код:
package main
import (
"fmt"
"os/exec"
)
func main() {
command:= exec.Command("Your binary file path")
// set var to get the output
var out bytes.Buffer
// set the output to our variable
command.Stdout = &out
err = command.Run()
if err != nil {
log.Println(err)
}
fmt.Println(out.String())
}
Этот работает для меня для запуска двоичного файла, который напечатает некоторую случайную строку.
Я могу получить выход.
package main
import (
"fmt"
"os/exec"
)
func main() {
output, err := exec.Command("/Users/duguying/gopath/bin/test").Output()
if err!=nil {
fmt.Println(err.Error())
}
fmt.Println(string(output))
}
сначала проверьте ваш двоичный файл, или двоичный путь к файлу корректируется. попробуйте распечатать сообщение об ошибке.