这两天做项目的时候发现exec包在windows和linux下的使用不一样。
在windows下用dir指令查看不了当前目录下的文件,会报错。
比如:
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")就能够运行成功啦。
版权声明:本文为xiaodongdonga原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。