我有这个应用程序需要 ping google.com 以查看网络连接是否有效。以下工作代码正常并列出目录内容:cmd = exec.Command("ls", "-lah")var stdout, stderr bytes.Buffercmd.Stdout = &stdoutcmd.Stderr = &stderrerr = cmd.Run()if err != nil { log.Fatalf("cmd.Run() failed with %s\n", err)}outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes())fmt.Printf("out:\n%s\nerr:\n%s\n", outStr, errStr)当我更改参数时,它会挂起。cmd = exec.Command("ping", "goole.com")这会导致错误:cmd.Run() failed with exit status 2cmd = exec.Command("ping", "https://www.goole.com")在我将 args 更改为:cmd = exec.Command("ping -c 5", "goole.com")我得到cmd.Run() 因 exec 失败:“ping -c 5”:在 $PATH 中找不到可执行文件我正在为我的依赖项使用 go mod。知道我做错了什么吗?
3 回答
偶然的你
TA贡献1841条经验 获得超3个赞
错误是因为你提到了
https
. 尝试运行为
cmd = exec.Command("ping", "www.google.com")
或者简单地"google.com"
也应该工作。
第一个挂起的原因是因为您在调用
ping
时没有任何其他无限运行 ping 的参数。-c
因此,请尝试使用提及计数的 args 来调用它。这应该工作。
cmd := exec.Command("ping", "-c" , "3", "google.com")
更好的是,以更小的间隔-i 0.1
或您认为合适的方式使其更快。但请确保您添加了-c
.
白衣非少年
TA贡献1155条经验 获得超0个赞
该ping
命令无限期运行,这就是它似乎挂起的原因 -ping
永远不会退出。您可以通过使用参数限制 ping 尝试次数来强制它退出-c
,例如
ping -c 5 goole.com
将尝试 5 次 ping。这是外壳形式。在您的代码中,使用:
cmd = exec.Command("ping", "-c1", "goole.com")
https://www.goole.com
失败,因为ping
需要主机名,而不是 URL。
- 3 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消