这两天做项目的时候发现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")
就能够运行成功啦。
本文探讨了Go语言中的`exec`包在Windows和Linux操作系统下的不同行为。在Windows环境下,使用`dir`命令会因为找不到可执行文件而报错,需要将可执行文件放在GOPATH中才能正常运行。而在Linux环境下,命令执行通常更为直接。通过示例代码展示了如何在Windows下正确执行本地程序,并对比了两种环境下的执行差异。
3719

被折叠的 条评论
为什么被折叠?



