`

golang中os/exec包用法

 
阅读更多

   1:exec包执行外部命令,它将os.StartProcess进行包装使得它更容易映射到stdin和stdout,并且利用pipe连接i/o.

   2:执行shell命令demo:

func RunCommand(lang, strCommand string) (string, bool) {
   pCommand := exec.Command("/bin/ash", "-c", strCommand)

   oStdout, err := pCommand.StdoutPipe()
   if err != nil {
      strError := L(lang, "commd_failed_and_reason", strCommand, "StdoutPipe", err.Error())
      return strError, false
}

   oStderr, err := pCommand.StderrPipe()
   if err != nil {
      strError := L(lang, "commd_failed_and_reason", strCommand, "StderrPipe", err.Error())
      return strError, false
}

   if err := pCommand.Start(); err != nil {
      strError := L(lang, "commd_failed_and_reason", strCommand, "Start", err.Error())
      return strError, false
}

   aBytesErr, err := ioutil.ReadAll(oStderr)
   if err != nil {
      strError := L(lang, "commd_failed_and_reason", strCommand, "ReadAll stderr", err.Error())
      return strError, false
}

   if len(aBytesErr) != 0 {
      strError := L(lang, "commd_failed_and_reason", strCommand, "stderr is not nil", string(aBytesErr))
      return strError, false
}

   aBytes, err := ioutil.ReadAll(oStdout)
   if err != nil {
      strError := L(lang, "commd_failed_and_reason", strCommand, "ReadAll stdout", err.Error())
      return strError, false
}

   if err := pCommand.Wait(); err != nil {
      strError := L(lang, "commd_failed_and_reason", strCommand, "Wait", err.Error())
      return strError, false
}

   aResult := aBytes
if len(aBytes) > 0 && string(aBytes[len(aBytes)-1:]) == "\n" {
      aResult = aBytes[0 : len(aBytes)-1]
   }

   return string(aResult), true
}

 

 

 

分享到:
评论

相关推荐

    Go-exec一个golang包用于与一个在后台运行的进程进行交互

    通过以上介绍,我们了解到`os/exec`包在Golang中扮演着重要的角色,它使得开发者能够方便地与外部进程进行交互,执行各种系统任务。在实际项目中,`os/exec`通常与其他标准库(如`os`, `io`, `io/ioutil`, `log`等)...

    golang win7/win8 获取管理员权限

    2. **使用`os/exec`包**:`os/exec`包提供了一个更高级别的接口来执行外部命令。我们可以使用这个包来启动一个需要管理员权限的新进程。在Windows上,这通常涉及创建一个需要管理员权限的批处理文件,然后通过`exec....

    golang 开发中的工具包.zip

    在Golang开发中,工具包扮演着至关重要的角色,它们为开发者提供了丰富的功能,提高了代码的可读性、可维护性和开发效率。本资源“golang 开发中的工具包.zip”包含了一个名为“goutils-main”的项目,很可能是某个...

    cmdgo 获取 命令行执行的结果并且在程序中处理

    在Go语言中,`os/exec`包提供了一个`Cmd`结构体,用于表示要执行的命令和其参数。通过创建`Cmd`实例,设置命令路径和参数,然后调用`Output()`或`CombinedOutput()`方法,我们可以获取命令执行的输出结果。例如: `...

    利用Golang如何调用Linux命令详解

    本文将详细介绍如何在 Golang 中使用 `os/exec` 包来执行 Linux 命令,并通过具体的示例代码进行讲解。 #### 一、`os/exec`包简介 `os/exec` 是 Golang 标准库中的一个包,它提供了用于执行外部命令的功能。该包中...

    go-cron:github.comrobfigcron和osexec上的简单golang包装器作为cron的替代品

    戈龙 github.com/robfig/cron和os/exec简单golang包装器作为cron的替代品 用法 go-cron "* * * * * *" /bin/bash -c "echo 1

    golang中文手册.chm 1.33

    手册将逐一解析这些库的使用方法。 9. **测试和基准**:Go语言内置了方便的测试框架,手册会讲解如何编写和运行单元测试,以及如何进行性能基准测试。 10. **工具链**:Go的工具链包括编译器、链接器、格式化工具...

    Go语言操作系统操作:os包的深度应用

    `os`包是Go语言标准库的重要组成部分,它提供了一系列用于与操作系统交互的函数和方法,包括文件操作、目录管理、环境变量访问、进程管理等功能。通过这些API,开发者可以轻松地执行复杂的系统级任务,无需关心底层...

    Go语言调用Shell与可执行文件的实现

    os/exec包可用于调用外部命令,可以使用管道连接输入输出,并支持阻塞与非阻塞方式执行命令。 os/exec包中关键的类型为Cmd,以下介绍的所有方法皆服务于该类型: func Command(name string, arg …string) *Cmd ...

    tail:golang包以尾部linux文件

    在Golang中实现`tail`功能,我们可以利用`os/exec`包来执行外部命令,以及`bufio.Scanner`来处理输入流。 `bufio.Scanner`是Golang标准库中的一个类,它允许我们分块读取输入,这对于处理大文件或流式数据非常有效...

    golang项目如何上线部署到Linu服务器(方法详解)

    - **调用Linux命令**:Golang的`os/exec`包允许程序执行shell命令,实现与操作系统更深度的交互,如管理系统服务、监控系统状态等。 了解以上知识点后,开发者可以更有效地进行Golang项目的开发和部署,特别是在...

    golang执行命令获取执行结果状态(推荐)

    总的来说,Golang的`os/exec`包提供了一套强大且灵活的API来执行外部命令。通过使用`Start`、`Wait`和I/O管道,我们可以捕获命令的输出并检查其执行状态,这对于编写需要与外部系统交互的程序非常有用。理解这些概念...

    golang守护进程用法示例

    本文实例讲述了golang守护进程用法。分享给大家供大家参考,具体如下: 用node写了一个socket后台服务,可是有时候会挂,node一个异常就game over了,所以写了一个守候. 代码如下:package main import (  “log”  ...

    go-expect:类似于期望的golang库,用于自动控制基于终端或控制台的程序

    包期望提供了类似期望的界面来自动控制应用程序。 它与期望不同,它不会产生或管理流程生命周期。 该软件包仅关注期望输出并通过其伪终端发送输入。 用法 os.Exec示例 package main import ( "log" "os" "os/...

    os-1:golang中的操作系统,c

    总的来说,Golang中的操作系统交互涉及`os`包的使用,以及通过Cgo调用C和汇编代码以达到更底层的操作。理解这些概念和技巧对于编写高效且跨平台的Golang程序至关重要。同时,合理利用Cgo可以帮助开发者充分利用操作...

    Go-GolangHelper用于实现漂亮的CLI应用程序

    Go语言的`os`和`os/exec`包提供了处理系统命令和环境变量的能力。同时,`io/ioutil`和`os/file`包可以帮助我们读写文件,进行数据持久化。 对于更复杂的交互,比如提示用户输入或确认操作,可以使用`fmt.Scan()`或...

    golang 检查网络状态是否正常的方法

    2. **使用`os/exec`包执行外部命令**:通过调用系统级别的工具或命令(如`ping`),可以方便地实现网络状态检测功能。 3. **命令行参数设置与错误处理**:正确配置命令行参数对于执行特定的网络测试至关重要,同时也...

    go-shex:一个用于创建https的简单软件包

    在使用os/exec软件包时,您可能会遇到一些一致性问题:在您的命令解释器上正常运行的命令在使用所述软件包进行调用时会惨败。 为了解决此常见问题,go-shex软件包尝试通过在UNIX系统上查找SHELL环境变量或在...

    使用 golang 开发 开发 Linux 命令行实用程序 中的 selpg.zip

    在`selpg-master`这个目录中,通常会包含源码文件(`.go`)、配置文件、测试文件和可能的README文档,详细解释项目结构和使用方法。通过阅读这些文件,你可以更深入地理解`selpg`的工作原理和开发过程。记得根据项目...

    Go-Go标准库所有使用方法例子请注意这不是Go的中文版标准库

    Go语言,由Google开发,以其简洁的语法和高效...通过阅读和实践"Go-Go标准库所有使用方法例子"中的示例,开发者能够快速提升Go语言的使用技能,深入理解Go语言的设计哲学。记得定期检查更新,以获取最新的示例和功能。

Global site tag (gtag.js) - Google Analytics