c++使用netsh命令_golang - 执行系统命令
发布日期:2021-06-24 14:06:19 浏览次数:2 分类:技术文章

本文共 1442 字,大约阅读时间需要 4 分钟。

简介

执行系统命令是一个很重要的操作,直接调用系统命令,减少造轮子的时间。

golang执行命令的包:os/exec

a73588d21a8ae5fb5873b22025be0bd4.png

查找命令的绝对路径

cmdPath , err := exec.LookPath("ls")if err !=nil{fmt.Println(err)}fmt.Println(cmdPath)

创建命令对象

func Commandfunc Command(name string, arg ...string) *Cmd

函数返回一个*Cmd,用于使用给出的参数执行name指定的程序。返回值只设定了Path和Args两个参数。

如果name不含路径分隔符,将使用LookPath获取完整路径;否则直接使用name。参数arg不应包含命令名。

cmdPath , err := exec.LookPath("ls")if err !=nil{pacnic(err)}command := exec.Command(cmdPath,"-l")

执行命令

go提供了好几个函数运行命令

func (c *Cmd) Run() error

Run执行c包含的命令,并阻塞直到完成。

如果命令成功执行,stdin、stdout、stderr的转交没有问题,并且返回状态码为0,方法的返回值为nil;如果命令没有执行或者执行失败,会返回*ExitError类型的错误;否则返回的error可能是表示I/O问题。

func (c *Cmd) Start() error

Start开始执行c包含的命令,但并不会等待该命令完成即返回。Wait方法会返回命令的返回状态码并在命令返回后释放相关的资源。

func (c *Cmd) Wait() error

Wait会阻塞直到该命令执行完成,该命令必须是被Start方法开始执行的。

如果命令成功执行,stdin、stdout、stderr的转交没有问题,并且返回状态码为0,方法的返回值为nil;如果命令没有执行或者执行失败,会返回*ExitError类型的错误;否则返回的error可能是表示I/O问题。Wait方法会在命令返回后释放相关的资源。

func (c *Cmd) Output() ([]byte, error)

执行命令并返回标准输出的切片。

func (c *Cmd) CombinedOutput() ([]byte, error)

执行命令并返回标准输出和错误输出合并的切片。

只是执行命令,不需要读取输出,用Start或者Run,然后判断err即可; 由于Start是没有等待的,所以需要使用Wait去等。

如果需要获取输出,及可以用OutPut或者CombinedOutput。

例如:

cmdPath , err := exec.LookPath("ls")if err !=nil{panic(err)}command := exec.Command(cmdPath,"-l")result , err := command.CombinedOutput()if err !=nil{ fmt.Println("命令执行失败:"+err.Error())}fmt.Println(string(result))
46fb6826805a44f4bfc070eaabca22db.png

使用管道执行命令

package mainimport ("bytes""fmt""io""os""os/exec")func main() {ps := exec.Command("ps

转载地址:https://blog.csdn.net/weixin_33309433/article/details/112098822 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:https访问后端 vue_新鲜出炉的一款SpringBoot +Vue的考试系统
下一篇:golang 参数 json_Golang实现RPC

发表评论

最新留言

很好
[***.229.124.182]2024年04月01日 08时25分16秒