golang exec包在windows下的使用

本文探讨了Go语言中的`exec`包在Windows和Linux操作系统下的不同行为。在Windows环境下,使用`dir`命令会因为找不到可执行文件而报错,需要将可执行文件放在GOPATH中才能正常运行。而在Linux环境下,命令执行通常更为直接。通过示例代码展示了如何在Windows下正确执行本地程序,并对比了两种环境下的执行差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天做项目的时候发现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")

就能够运行成功啦。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值