GO语言运行cmd命令逐行实时输出执行过程

windvix · 2015-06-17 23:07:41 · 32508 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2015-06-17 23:07:41 的文章,其中的信息可能已经有所发展或是发生改变。

Golang运行cmd命令逐行实时输出执行过程,注意,不是一次输出所有的内容,而是按照执行的过程,逐行逐行的实时显示出来

代码如下:

package main

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

func main() {
	command := "ls"
	params := []string{"-l"}
	//执行cmd命令: ls -l
	execCommand(command, params)
}

func execCommand(commandName string, params []string) bool {
	cmd := exec.Command(commandName, params...)

	//显示运行的命令
	fmt.Println(cmd.Args)

	stdout, err := cmd.StdoutPipe()

	if err != nil {
		fmt.Println(err)
		return false
	}
	
	cmd.Start()

	reader := bufio.NewReader(stdout)

	//实时循环读取输出流中的一行内容
	for {
		line, err2 := reader.ReadString('\n')
		if err2 != nil || io.EOF == err2 {
			break
		}
		fmt.Println(line)
	}

	cmd.Wait()
	return true
}

编译运行效果如图:




有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:windvix

查看原文:GO语言运行cmd命令逐行实时输出执行过程

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

32508 次点击  ∙  2 赞  
加入收藏 微博
5 回复  |  直到 2019-04-09 19:32:38
dasenlin12
dasenlin12 · #1 · 9年之前

完美

1851206559
1851206559 · #2 · 7年之前

请问如何执行shell内嵌命令呢?如"history“命令?

用cmd.Command("history”)会报错: exec: "history": executable file not found in $PATH

1851206559
1851206559 · #3 · 7年之前

exec.Comman("histroy“)..

wi-cuckoo
wi-cuckoo · #4 · 6年之前

在下有一问,那种tail -f的执行怎么终止,一种考虑是传入可cancel 的context,还有其他办法不

veryrich
veryrich · #5 · 6年之前

请问输出的内容有换行,如何才可以清除换行

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传