c++使用netsh命令_Go语言 - 调用系统命令

简介

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

golang执行命令的包:os/exec

733e74704ade548f916a23f59bf3592f.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))
668ee58bbb37d7ef83b9d56cd1a281c4.png

使用管道执行命令

package mainimport ("bytes""fmt""io""os""os/exec")func main() {ps := exec.Command("ps
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值