欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang執(zhí)行命令獲取執(zhí)行結果狀態(tài)(推薦)

 更新時間:2019年11月20日 09:43:50   作者:jacpy  
這篇文章主要介紹了golang執(zhí)行命令獲取執(zhí)行結果狀態(tài)的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧

這幾天在用golang寫一個工具,要執(zhí)行外部命令工具,而且還要將外部命令工具輸出的日志也要輸出出來。網上找了一下,資料很多,關鍵是執(zhí)行的結果成功或失敗狀態(tài)沒找到好的方法獲取到。

剛開始想的是看錯誤日志,如果有錯誤日志,那么就是執(zhí)行失敗。測試的時候發(fā)現這樣不行,發(fā)現有些時候會用error輸出日志,但不一定就是執(zhí)行失敗。后來想用日志中的關鍵字匹配,因為有些命令執(zhí)行成功或失敗都是有關鍵字輸出的,測試發(fā)現也不太好。

最后沒辦法,看了一下Cmd.Wait()方法的實現,突然眼前一亮,找到方法了,有一個Cmd.ProcessState結構體可以使用。于是整理了一下,貼一下代碼實現:

func Exec(name string, args ...string) error {
 cmd := exec.Command(name, args...)
 stderr, _ := cmd.StderrPipe()
 stdout, _ := cmd.StdoutPipe()
 if err := cmd.Start(); err != nil {
 log.Println("exec the cmd ", name, " failed")
 return err
 }
 // 正常日志
 logScan := bufio.NewScanner(stdout)
 go func() {
 for logScan.Scan() {
  log.Println(logScan.Text())
 }
 }()
 // 錯誤日志
 errBuf := bytes.NewBufferString("")
 scan := bufio.NewScanner(stderr)
 for scan.Scan() {
 s := scan.Text()
 log.Println("build error: ", s)
 errBuf.WriteString(s)
 errBuf.WriteString("\n")
 }
 // 等待命令執(zhí)行完
 cmd.Wait()
 if !cmd.ProcessState.Success() {
 // 執(zhí)行失敗,返回錯誤信息
 return errors.New(errBuf.String())
 }
 return nil
}

注意:上面代碼中沒有處理輸入的情況,如果待執(zhí)行的命令需要輸入數據,則不適用。

總結

以上所述是小編給大家介紹的golang執(zhí)行命令獲取執(zhí)行結果狀態(tài),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • Golang動態(tài)調用方法小結

    Golang動態(tài)調用方法小結

    本文主要介紹了Golang動態(tài)調用方法小結,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Go語言Telnet回音服務器的實現

    Go語言Telnet回音服務器的實現

    這篇文章主要介紹了Go語言Telnet回音服務器的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • go連接kafka的實現示例

    go連接kafka的實現示例

    本文主要介紹了go連接kafka的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • golang 字符串比較是否相等的方法示例

    golang 字符串比較是否相等的方法示例

    這篇文章主要介紹了golang 字符串比較是否相等的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Golang在Window環(huán)境使用Imagick7的過程

    Golang在Window環(huán)境使用Imagick7的過程

    這篇文章主要介紹了Golang在Window環(huán)境使用Imagick7的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • 在Golang中使用http.FileServer返回靜態(tài)文件的操作

    在Golang中使用http.FileServer返回靜態(tài)文件的操作

    這篇文章主要介紹了在Golang中使用http.FileServer返回靜態(tài)文件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang的Fork/Join實現代碼

    Golang的Fork/Join實現代碼

    Fork/Join本質上是一種任務分解,將一個很大的任務分解成若干個小任務,然后再對小任務進一步分解,直到最小顆粒度,然后并發(fā)執(zhí)行,對Golang的Fork/Join實現代碼感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • Golang實現IP地址轉整數的方法詳解

    Golang實現IP地址轉整數的方法詳解

    在 Go 語言中,將 IP 地址轉換為整數涉及到解析 IP 地址并處理其字節(jié)表示,本文給大家介紹了Golang實現IP地址轉整數的方法,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2024-02-02
  • go語言中五種字符串的拼接方式(小結)

    go語言中五種字符串的拼接方式(小結)

    字符串拼接在 golang 里面其實有很多種實現,本文就詳細的介紹一下go語言中五種字符串的拼接方式以及性能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Go語言導出內容到Excel的方法

    Go語言導出內容到Excel的方法

    這篇文章主要介紹了Go語言導出內容到Excel的方法,涉及Go語言操作excel的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02

最新評論