golang 执行命令控制台实时输出

/ 实用技巧 / 0 条评论 / 938 浏览

本站的所有程序和文章,仅限用于学习和研究目的;不得用于商业或者非法用途,否则,一切后果请用户自负!!

多种exec按需求用吧,参数很多,或者需要用很多管道符的时候推荐用/bin/bash -c 来执行

func RunCommand(command string) error {
	//cmd := exec.Command(name, arg...)
	cmd := exec.Command("/bin/bash", "-c", command)
	//cmd := exec.Command("python3" ,"oneforall.py","--target","baidu.com","run")

	// 命令的错误输出和标准输出都连接到同一个管道
	stdout, err := cmd.StdoutPipe()
	cmd.Stderr = cmd.Stdout

	if err != nil {
		return err
	}

	if err = cmd.Start(); err != nil {
		return err
	}
	// 从管道中实时获取输出并打印到终端
	for {
		tmp := make([]byte, 1024)
		_, err := stdout.Read(tmp)
		fmt.Print(string(tmp))
		if err != nil {
			break
		}
	}

	if err = cmd.Wait(); err != nil {
		return err
	}
	return nil
}

本文最后编辑时间为: 2021-04-21

如本文对你有帮助,点击下面广告支持一下吧,创作不易,感谢大佬。

safe6