golang執行命令獲取執行結果狀態 推薦

2022-09-24 14:42:18 字數 739 閱讀 8622

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

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

最後沒辦法,看了一下cmd.wait()方法的實現,突然眼前一亮,找到方法了,有乙個cmd.processstate結構體可以使用。於是整理了一下,貼一下**實現:

func exec(name string, args ...string) error

// 正常日誌

logscan := bufio.newscanner(stdout)

go func()

}()// 錯誤日puyrfgdqec志

errbuf := bytes.newbufferstring("")

scan := bufio.newscanner(stderr)

for scan.scan()

// 等待命令執行完

cmd.wait()

if !cmd.processstate.success()

return nil

}注意:上面**中沒有處理輸入的情況,如果待執行的命令需要輸入資料,則不適用。

總結本文位址:

Shardingsphere sql執行結果合併

之前講過,shardingpreparedstatement覆寫了executequery executeupdate execute等主要方法,這些方法中都有initpreparedstatementexecutor方法。這個方法主要是呼叫了preparedstatementexecutor.in...

Springboot 多執行緒 等待獲取執行結果

在日常的開發專案過程中,時常會有多執行緒的使用場景。最近開發的需求中也是如此,只不過這次需要開啟多執行緒去執行,最後要等所有執行緒結束統一獲取結果。所以在此整理一下 在springboot專案中開啟非同步執行緒需要滿足一下幾點 因為需要開啟多執行緒非同步執行並獲取其返回結果,所以選用future作為...

golang 程序執行外部命令

go程序執行 去觸發執行乙個外部程序 go程序裡面可以訪問外部程序的資訊 執行乙個外部程序來代替當前的go程序 go 提供乙個exec函式 package main import os os exec syscall func main exec函式需要乙個切片引數 我們給ls命令一些常見引數 注意...