Go CLI输出:在中间杀死进程,但不需要输出
我目前正在进行一个项目,该项目要求我发送一个curl请求。请求的输出提供了一个链接,该链接将在10秒内过期。链接开始下载。我正在尝试发送请求并从go程序中的链接下载文件。但是提供输出的链接需要10秒才能完成,之后我无法访问该链接。因此,我决定使用Go CLI输出:在中间杀死进程,但不需要输出,go,curl,timeout,command-line-interface,irc,Go,Curl,Timeout,Command Line Interface,Irc,我目前正在进行一个项目,该项目要求我发送一个curl请求。请求的输出提供了一个链接,该链接将在10秒内过期。链接开始下载。我正在尝试发送请求并从go程序中的链接下载文件。但是提供输出的链接需要10秒才能完成,之后我无法访问该链接。因此,我决定使用timeout命令过早地终止进程,并能够下载所需的文件。但是,当我在Go中尝试同样的事情时,我无法获得输出,直到它被杀死后才会显示出来 我只得到这个输出 % Total % Received % Xferd Average Speed Ti
timeout
命令过早地终止进程,并能够下载所需的文件。但是,当我在Go中尝试同样的事情时,我无法获得输出,直到它被杀死后才会显示出来
我只得到这个输出
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1320 0 1043 100 277 98 26 0:00:10 0:00:10 --:--:-- 12
我使用下面的go脚本
cmd := exec.Command("chmod", "744", "end.sh")
out, err := cmd.Output()
cmd1 := exec.Command("./end.sh")
out, err = cmd1.CombinedOutput()
if err != nil {
log.Fatalf("cmd.Run(endpoint) failed with %s\n", err)
}
fmt.Println(string(out))
这段代码调用一个shell脚本
timeout 5 curl XXXXXXXXX
那么,要从shell脚本或go脚本修改中获得输出,我可以做些什么呢?它必须是curl吗?您只需从go调用http请求,就可以获得所需的输出,而无需执行curl。从go执行shell命令是错误的,需要花费95%的时间。通常,您只想在本机Go代码中重新创建行为。这说明您的问题最有可能是因为
curl
在其标准输出连接到tty时与连接到另一个进程时发出不同的输出。这是“Go”。不是“去郎”。你不应该在标题中加标签。