51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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

多种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



`}
`

赞(3)
未经允许不得转载:工具盒子 » golang 执行命令控制台实时输出