教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Golang执行cmd命令行的方法

Golang执行cmd命令行的方法

发布时间:2022-02-07   编辑:jiaochengji.com
教程集为您提供Golang执行cmd命令行的方法等资源,欢迎您收藏本站,我们将为您提供最新的Golang执行cmd命令行的方法资源
<h1>1. Golang执行系统命令使用 os/exec Command方法:</h1> <pre class="has"><code class="language-html">func Command(name string, arg ...string) *Cmd</code></pre>

<code>第一个参数是命令名称,后面参数可以有多个命令参数。</code>

 

<code>cmd := exec.Command(</code><code>"ls"</code><code>, </code><code>"-a"</code><code>)</code>

<code>if stdout, err := cmd.StdoutPipe(); err != nil {     //获取输出对象,可以从该对象中读取输出结果</code>

<code>    log.Fatal(err)</code>

<code>}</code>

<code>defer</code> <code>stdout.Close()   // 保证关闭输出流</code>

 

<code>if</code> <code>err := cmd.Start(); err != nil {   // 运行命令</code>

<code>    log.Fatal(err)</code>

}

 

<code>if opBytes, err := ioutil.ReadAll(stdout); err != nil {  // 读取输出结果    </code>

<code>    log.Fatal(err)</code>

<code>} else {</code>

<code>    log.Println(string(opBytes))</code>

<code>}</code>

 

<h1>2.  将命令的输出结果重定向到文件中: </h1>

<code>    </code><code>stdout, err := os.OpenFile(</code><code>"stdout.log"</code><code>, os.O_CREATE|os.O_WRONLY, </code><code>0600</code><code>)   </code>

<code>    </code><code>if</code> <code>err != nil {</code>

<code>        </code><code>log.Fatalln(err)</code>

<code>    </code><code>}</code>

<code>    </code><code>defer</code> <code>stdout.Close()</code>

<code>    cmd.Stdout = stdout   // 重定向标准输出到文件</code>

<code>    </code><code>// 执行命令</code>

<code>    </code><code>if</code> <code>err := cmd.Start(); err != nil {</code>

<code>        </code><code>log.Println(err)</code>

<code>    </code><code>}</code>

 

<h1>3. cmd的Start和Run方法的区别: </h1>

Start执行不会等待命令完成,Run会阻塞等待命令完成。

<code>cmd := exec.Command(</code><code>"sleep"</code><code>, </code><code>"10"</code><code>)</code>

<code>err := cmd.Run()  //执行到此处时会阻塞等待10秒</code>

<code>err := cmd.Start()   //如果用start则直接向后运行</code>

<code>if</code> <code>err != nil {</code>

<code>    log.Fatal(err)</code>

<code>}</code>

<code>err = cmd.Wait()   //执行Start会在此处等待10秒</code>

 

<h1><code>4. 如果命令名称和参数写成一个字符串传给</code>Command方法,可能会执行失败报错:file does not exist,但此时如果按以下方式强行启动一个DOS窗口(windows平台)进行执行,也是成功的。</h1>

在Windows平台,强行弹出DOS窗口执行命令行: 

<pre class="has"><code class="language-html">cmdLine := pscp -pw pwd local_filename user@host:/home/workspace cmd := exec.Command("cmd.exe", "/c", "start " cmdLine) err := cmd.Run() fmt.Printf("%s, error:%v \n", cmdLine, err) </code></pre>

 

<h1>5. 运行时隐藏golang程序自己的cmd窗口:</h1>

      go build -ldflags -H=windowsgui 

<h1>
6. Windows平台上,执行系统命令隐藏cmd窗口:</h1>

cmd := exec.Command("sth")
if runtime.GOOS == "windows" {
    cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
}
err := cmd.Run()

 


 

到此这篇关于“Golang执行cmd命令行的方法”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Golang执行cmd命令行的方法
PHP程序在php执行正常,在CMD报扩展加载错误
cmd命令行下运行php文件的示例
python怎么调用cmd命令
怎么检查电脑上是否安装了python
Golang模仿七牛图片处理API
PHP执行cmd命令的方法
php不支持执行cmd命令行
shell命令行参数用法简介
学习手动添加和删除Windows服务

[关闭]
~ ~