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!