• 执行脚本命令


    package main
    
    import (
        "os/exec"
        "fmt"
    )
    
    func main()  {
        var(
            cmd *exec.Cmd
            output []byte
            err error
        )
    
        cmd = exec.Command("D:\phpStudy\PHPTutorial\php\php-5.6.27-nts\php.exe","-m")
        if output,err = cmd.CombinedOutput();err !=nil{
            fmt.Println(err)
            return
        }
        fmt.Println(string(output))
    }
    GOROOT=D:go #gosetup
    GOPATH=D:gospace;C:UsersAdministratorgo #gosetup
    D:goingo.exe build -i -o C:UsersAdministratorAppDataLocalTemp\___go_build_main_go__4_.exe D:/gospace/src/gocode/test/main.go #gosetup
    D:softGoLandin
    unnerw.exe C:UsersAdministratorAppDataLocalTemp\___go_build_main_go__4_.exe #gosetup
    [PHP Modules]
    bcmath
    bz2
    calendar
    Core
    ctype
    curl
    date
    dom
    ereg
    filter
    ftp
    gd
    hash
    iconv
    json
    libxml
    mbstring
    mcrypt
    mhash
    mongodb
    mysql
    mysqli
    mysqlnd
    odbc
    openssl
    pcre
    PDO
    pdo_mysql
    pdo_sqlite
    Phar
    Reflection
    session
    SimpleXML
    SPL
    sqlite3
    standard
    tokenizer
    wddx
    xml
    xmlreader
    xmlwriter
    xsl
    Zend Guard Loader
    zip
    zlib
    
    [Zend Modules]
    Zend Guard Loader
    
    
    
    Process finished with exit code 0
    View Code

    window可以安装

    Cygwin

    package main
    
    import (
        "os/exec"
        "fmt"
    )
    
    func main() {
        var (
            cmd *exec.Cmd
            output []byte
            err error
        )
    
        // 生成Cmd
        cmd = exec.Command("C:\cygwin64\bin\bash.exe", "-c", "D:/phpstudy/PHPTutorial/php/php-5.6.27-nts/php E:/WWW/a.php")
    
        // 执行了命令, 捕获了子进程的输出( pipe )
        if output, err = cmd.CombinedOutput(); err != nil {
            fmt.Println(err)
            return
        }
    
        // 打印子进程的输出
        fmt.Println(string(output))
    }
    Array
    (
        [k1] => 1578363861
        [k2] => 3c3e73f6c50c44436617869f9e978fcb
    )
    package main
    
    import (
        "os/exec"
        "context"
        "time"
        "fmt"
    )
    
    type result struct {
        err error
        output []byte
    }
    
    func main() {
        //  执行1个cmd, 让它在一个协程里去执行, 让它执行2秒: sleep 2; echo hello;
        // 1秒的时候, 我们杀死cmd
        var (
            ctx context.Context
            cancelFunc context.CancelFunc
            cmd *exec.Cmd
            resultChan chan *result
            res *result
        )
    
        // 创建了一个结果队列
        resultChan = make(chan *result, 1000)
    
        // context:   chan byte
        // cancelFunc:  close(chan byte)
    
        ctx, cancelFunc = context.WithCancel(context.TODO())
    
        go func() {
            var (
                output []byte
                err error
            )
            cmd = exec.CommandContext(ctx, "C:\cygwin64\bin\bash.exe", "-c", "sleep 2;echo hello;")
    
            // 执行任务, 捕获输出
            output, err = cmd.CombinedOutput()
    
            // 把任务输出结果, 传给main协程
            resultChan <- &result{
                err: err,
                output: output,
            }
        }()
    
        // 继续往下走
        time.Sleep(1 * time.Second)
    
        // 取消上下文
        cancelFunc()
    
        // 在main协程里, 等待子协程的退出,并打印任务执行结果
        res = <- resultChan
    
        // 打印任务执行结果
        fmt.Println(res.err, string(res.output))
    }
  • 相关阅读:
    [GO]使用bufio的文件读取方式
    php开发工程师面必问题
    一位资深php程序员在北京的面试30个题目
    GIT 分支管理:创建与合并分支、解决合并冲突
    linux下挂在u盘,移动硬盘的方法,转移服务器资料的时候,使用移动硬盘什么最方便了
    php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能
    navicat 官方使用手册,中文版,快捷键大全
    Memcached之缓存雪崩,缓存穿透,缓存预热,缓存算法
    Memcache 笔记(2)
    Memcache笔记(1)
  • 原文地址:https://www.cnblogs.com/sunlong88/p/11285673.html
Copyright © 2020-2023  润新知