Maison >développement back-end >Golang >Comment capturer et enregistrer de manière fiable la sortie de la commande Golang `exec` dans un fichier ?

Comment capturer et enregistrer de manière fiable la sortie de la commande Golang `exec` dans un fichier ?

DDD
DDDoriginal
2024-12-02 10:19:13163parcourir

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

Capture de la sortie de commande et écriture dans un fichier dans Golang

Lors de l'exécution de commandes dans Golang à l'aide du package exec, vous pouvez rencontrer des situations dans lesquelles vous souhaitez capturer la sortie standard et écrire dans un fichier. Voici un guide détaillé sur la façon d'y parvenir :

L'approche initiale impliquait la création d'un tube stdout, la configuration d'un écrivain, le démarrage de la commande, puis la copie de la sortie standard dans le fichier. Cependant, cette méthode aboutissait parfois à un fichier de sortie vide.

Grâce aux informations de KirkMcDonald sur le canal IRC #go-nuts, une solution plus simple a émergé. En attribuant le fichier de sortie directement à cmd.Stdout, la sortie standard de la commande peut être écrite directement dans le fichier. Voici le code révisé :

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()
}

Avec cette amélioration, le contenu de la sortie standard de la commande sera écrit directement dans le fichier spécifié. Le fichier ne sera plus vide, fournissant le résultat attendu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn