Go语言学习#13-借助exec执行外部命令

=Start=

缘由:

在实际编程过程中,不论是底层的C语言还是上层的Java/Python,在实现某些功能的时候,少不了调用外部命令。所以这里整理总结一下在Go 语言中借助os/exec包执行外部命令的方法,以及一个实现了超时退出功能的命令执行函数。

正文:

参考解答:

Go 语言中使用 exec.Cmd 结构类型来抽象用户要执行的外部命令;该类型下的 Command 方法,接收给定参数并返回 Cmd 结构体,但它只设置返回Cmd结构中的Path和Args。

如果名称 name 中不包含路径分隔符,命令将使用LookPath函数将名称解析为完整路径。否则,它直接使用名称作为路径。LookPath函数用于在PATH环境变量指定的目录中搜索一个名为file的可执行二进制文件。如果文件包含斜杠,则直接尝试使用该文件,并且不查看路径。查询结果可能是绝对路径或相对于当前目录的相对路径。

返回的Cmd中的Args字段由 命令名name 跟着 参数arg 一起组成,因此 arg 本身不应该包含命令名。例如,命令(“echo”,”hello”)。Args[0]始终是名称,而不是可能解析的路径。


下面是一个简单的示例(包含 tr 命令和 echo 命令的调用,还有对LookPath函数的测试):

 

但是在实际环境中,各种各样的情况都有可能出现,比如一个本地以及测试环境中执行只需要1、2秒的命令或脚本到了线上可能10秒钟也执行不完,但是,我们的流程又不能一直卡在这里等待完成,需要有一个超时退出的机制。这时就可以参考下面的示例:

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4156.html

《Go语言学习#13-借助exec执行外部命令》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注