首页后端开发其他后端知识Golang执行cmd命令行的方法是什么?

Golang执行cmd命令行的方法是什么?

时间2024-03-27 06:46:03发布访客分类其他后端知识浏览721
导读:这篇文章给大家分享的是“Golang执行cmd命令行的方法是什么?”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“Golang执行cmd命令行的方法是什么?”吧。...
这篇文章给大家分享的是“Golang执行cmd命令行的方法是什么?”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“Golang执行cmd命令行的方法是什么?”吧。

下面由golang教程栏目给大家介绍Golang执行cmd命令行的方法,希望对需要的朋友有所帮助!

1. Golang执行系统命令使用 os/exec Command方法:

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

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

cmd := exec.Command("ls", "-a")
if stdout, err := cmd.StdoutPipe();
 err != nil {
     //获取输出对象,可以从该对象中读取输出结果
    log.Fatal(err)
}
    
defer stdout.Close()   // 保证关闭输出流
 
if err := cmd.Start();
 err != nil {
   // 运行命令
    log.Fatal(err)
}
    
 
if opBytes, err := ioutil.ReadAll(stdout);
 err != nil {
  // 读取输出结果    
    log.Fatal(err)
}
 else {

    log.Println(string(opBytes))
}

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

 stdout, err := os.OpenFile("stdout.log", os.O_CREATE|os.O_WRONLY, 0600)   
    if err != nil {

        log.Fatalln(err)
    }
    
    defer stdout.Close()
    cmd.Stdout = stdout   // 重定向标准输出到文件
    // 执行命令
    if err := cmd.Start();
 err != nil {

        log.Println(err)
    }

3. cmd的Start和Run方法的区别:

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

cmd := exec.Command("sleep", "10")
err := cmd.Run()  //执行到此处时会阻塞等待10秒
err := cmd.Start()   //如果用start则直接向后运行
if err != nil {

    log.Fatal(err)
}

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

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

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

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)

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

 go build -ldflags -H=windowsgui

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

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

 }
    
 err := cmd.Run()

现在大家对于Golang执行cmd命令行的方法是什么?的内容应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Golang执行cmd命令行的方法是什么?的知识,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Golang执行cmd命令行的方法是什么?
本文地址: https://pptw.com/jishu/654048.html
Golang中函数作为值与类型是怎样,怎么实现 HTML5页面中图片转成base64编码如何实现

游客 回复需填写必要信息