这两天做项目的时候发现exec包在windows和linux下的使用不一样。
比如:
out, err := exec.Command("dir").Output() if err != nil { log.Fatal(err) } fmt.Println(string(out))
会报exec: "dir": executable file not found in %PATH%
当你把可执行文件放到GOPATH里时
cmd := exec.Command("main.exe") var out, stderr bytes.Buffer cmd.Stderr = &stderr cmd.Stdout = &out stdinPipe, err := cmd.StdinPipe() if err != nil { log.Fatalln(err) } io.WriteString(stdinPipe, "23 11\n") //根据测试的输入案例进行运行,拿到输出结果和标准结果的比对 if err := cmd.Run(); err != nil { fmt.Println("执行错误") log.Fatalln(err) } fmt.Println(out.String()) fmt.Println(out.String() == "34\n")
就能够运行成功啦。