Heim >Backend-Entwicklung >Golang >Wie kann ich die Ausgabe des Golang-Befehls „exec' zuverlässig in einer Datei erfassen und speichern?

Wie kann ich die Ausgabe des Golang-Befehls „exec' zuverlässig in einer Datei erfassen und speichern?

DDD
DDDOriginal
2024-12-02 10:19:13245Durchsuche

How to Reliably Capture and Save Golang `exec` Command Output to a File?

Befehlsausgabe erfassen und in eine Datei in Golang schreiben

Beim Ausführen von Befehlen in Golang mit dem Exec-Paket kann es vorkommen, dass Sie die Standardausgabe erfassen und schreiben möchten es in eine Datei. Hier ist eine detaillierte Anleitung, wie Sie dies erreichen können:

Der anfängliche Ansatz bestand darin, eine Standardausgabe-Pipe zu erstellen, einen Writer einzurichten, den Befehl zu starten und dann die Standardausgabe in die Datei zu kopieren. Diese Methode führte jedoch gelegentlich zu einer leeren Ausgabedatei.

Dank der Erkenntnisse von KirkMcDonald im IRC-Kanal #go-nuts entstand eine einfachere Lösung. Indem Sie die Ausgabedatei direkt cmd.Stdout zuweisen, kann die Standardausgabe des Befehls direkt in die Datei geschrieben werden. Hier ist der überarbeitete Code:

package main

import (
    "os"
    "os/exec"
)

func main() {
    // Create the command to be executed
    cmd := exec.Command("echo", "'WHAT THE HECK IS UP'")

    // Open the output file for writing
    outfile, err := os.Create("./out.txt")
    if err != nil {
        panic(err)
    }
    defer outfile.Close()

    // Assign the output file to the command's stdout
    cmd.Stdout = outfile

    // Start the command and wait for it to finish
    err = cmd.Start(); if err != nil {
        panic(err)
    }
    cmd.Wait()
}

Mit dieser Verbesserung wird der Inhalt der Standardausgabe des Befehls direkt in die angegebene Datei geschrieben. Die Datei ist nicht mehr leer und liefert die erwartete Ausgabe.

Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabe des Golang-Befehls „exec' zuverlässig in einer Datei erfassen und speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn