Maison > développement back-end > Golang > Comment puis-je enregistrer efficacement la sortie d'une commande Go `exec.Cmd` dans un fichier ?

Comment puis-je enregistrer efficacement la sortie d'une commande Go `exec.Cmd` dans un fichier ?

Susan Sarandon
Libérer: 2024-11-30 03:31:11
original
973 Les gens l'ont consulté

How Can I Efficiently Save the Output of a Go `exec.Cmd` Command to a File?

Capturer et enregistrer la sortie d'une commande dans un fichier à l'aide de exec.Cmd dans Go

Dans Go, vous devrez peut-être exécuter des commandes shell et capturez leur sortie standard dans un fichier pour un traitement ou une analyse ultérieure. Bien que l'extrait de code fourni tente de répondre à cette exigence, il ne parvient pas à produire le résultat souhaité en raison d'étapes manquantes dans la gestion de la sortie standard (stdout) de la commande.

Pour réussir à capturer et enregistrer la sortie standard de la commande, nous peut utiliser une approche plus simple en attribuant directement le fichier de sortie au champ Stdout de la commande. Cela permet d'écrire directement le résultat de la commande dans le fichier sans nécessiter de mécanismes de mise en mémoire tampon ou de copie supplémentaires. Voici une version optimisée du code :

package main

import (
    "io"
    "os"
    "os/exec"
)

func main() {

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

    // Execute the command and assign its stdout to the output file
    cmd := exec.Command("echo", "'WHAT THE HECK IS UP'")
    cmd.Stdout = outfile

    // Execute the command
    err = cmd.Run()
    if err != nil {
        panic(err)
    }
}
Copier après la connexion

Dans ce code, l'instruction cmd.Stdout = outfile établit une connexion entre la sortie standard de la commande et le fichier ouvert en écriture, garantissant que la sortie de la commande est directement écrit dans le fichier. Après l'exécution de la commande (cmd.Run), le fichier contiendra la sortie standard capturée de la commande.

En adoptant cette approche, vous simplifiez le processus de capture et d'enregistrement de la sortie de la commande dans un fichier, éliminant ainsi le besoin pour les opérations de mise en mémoire tampon et de routine complexes. Cette méthode fournit une solution plus efficace et rationalisée pour gérer la sortie standard des commandes exécutées à l'aide de exec.Cmd dans Go.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal