Maison >développement back-end >Golang >Existe-t-il un concept de lecture de la sortie d'un programme ligne par ligne sous forme de flux ?
J'ai une commande shell (comme journalctl -f -o json
) qui diffuse en continu les lignes vers la sortie standard.
Je veux ligne par ligne récupérer cette sortie et la traiter davantage.
os/exec
的文档解决了如何读取命令的输出,io
Gérez la mise en mémoire tampon des flux.
Il me semble que tout le traitement passe par un tampon fixe qui est lu, traité et écrit ultérieurement. Mon problème est que la taille de ce tampon est fixe et indépendante du contenu.
Existe-t-il un moyen de lire le flux entrant (dans mon cas, la sortie d'une commande shell) ligne par ligne ? Peut-être existe-t-il une bibliothèque de niveau supérieur au lecteur io
? io
读者更高级的库?
使用 cmd.stdoutpipe()
获取(管道)使用 cmd.start()
启动该进程之前的输出( start()
bufio.scanner
读取输入 (io.reader
Utilisez cmd .stdoutpipe()
Obtenez (pipeline) en utilisant cmd.start( )
Sortie avant de démarrer le processus ( start()
démarre la commande mais n'attend pas qu'elle se termine).
et utilisez
) ligne - ligne par ligne.
Par exemple, j'utiliserai ce script bash pour imprimer l'heure actuelle 3 fois et dormir 1 seconde entre chaque fois :
for i in {1..3}; do date; sleep 1; done
Exemple d'exécution de cette commande et de lecture de sa sortie ligne par ligne : log
包,以验证每行在第二次延迟后打印,另一个时间戳是 date
cmd := exec.command("bash", "-c", "for i in {1..3}; do date; sleep 1; done") out, err := cmd.stdoutpipe() if err != nil { log.fatal(err) } defer out.close() err = cmd.start() if err != nil { log.fatal(err) } scanner := bufio.newscanner(out) for scanner.scan() { line := scanner.text() fmt.println("output:", line) }Exemple de sortie : 🎜
2022/11/29 14:38:48 Output: Tue Nov 29 02:38:48 PM CET 2022 2022/11/29 14:38:49 Output: Tue Nov 29 02:38:49 PM CET 2022 2022/11/29 14:38:50 Output: Tue Nov 29 02:38:50 PM CET 2022🎜 (Le premier datetime au début de chaque ligne provient de la sortie de la commande 🎜.) 🎜
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!