在 os/exec 有一個 Cmd struct,我們可以使用 exec.Command(...) 來得到這個 Cmd 指標,接著可以使用 Cmd.Output( ) 得到執行結果。
看似很單純的程式,但只有第一次執行成功,接著都會失敗,錯誤訊息為"exec: Stdout already set"。
看了一下 source code,原來是程式會檢查 c.Stdout 是不是有設定過,換句話說,這個 struct 只能使用一次,不能重覆使用,解決方式也很簡單,不要使用 for loop 外面的變數,每次在 loop 裡面重新 new 一個即可。
另外,由於 linux command 的結果已經帶有換行字元,我們在顯示執行結果時就不需要再加換行字元了。
可惡,害我要明天才能看到結果,今天沒有心情做事了XD
沒有留言:
張貼留言