Heim  >  Artikel  >  Backend-Entwicklung  >  Golang gibt keine Ausgabe aus, wenn ich versuche, den Befehl auszuführen

Golang gibt keine Ausgabe aus, wenn ich versuche, den Befehl auszuführen

PHPz
PHPznach vorne
2024-02-12 16:12:191079Durchsuche

Golang 当我尝试执行命令时没有输出

Frageninhalt

Ich versuche, einige Befehle auszuführen (innerhalb von config.json) Nur der Befehl npm verfügt über eine Anzeigeausgabe

Dies ist das erste Mal, dass ich Stackoverflow verwende Bitte verzeihen Sie mir, wenn ich es nicht gut gemacht habe

Erwartete Ergebnisse: Wenn ich einen Befehl in config.json schreibe Gibt das richtige Ergebnis aus

main.go

func main () {
    file, _ := os.open("config.json")
    byteres, _ := ioutil.readall(file)
    var config config
    json.unmarshal(byteres, &config)
    defer file.close()

    process := exec.command(config.startcommand)
    stdout, _ := process.stdoutpipe()
    processscanner := bufio.newscanner(stdout)
    processscanner.split(bufio.scanlines)

    process.start()
    go func() {
        for processscanner.scan() {
            message := processscanner.text()
            fmt.println(message)
        }
    }()
}

config.json

{
    "StartCommand": "npm"
}

Lösung

Ihre Hauptfunktion wartet nicht auf den Abschluss Ihrer Goroutine. Verwenden Sie sync.WaitGroup, um main zu blockieren, bis die Goroutine abgeschlossen ist.

Das obige ist der detaillierte Inhalt vonGolang gibt keine Ausgabe aus, wenn ich versuche, den Befehl auszuführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen