go exec 之cmd 四種實用用法

2021-09-25 13:33:21 字數 1711 閱讀 5483

cmd欄位介紹

type cmd struct 

err = cmd.wait()

return out.string(), err

}

用法二:在命令位置使用並返回結果

func cmdandchangedir(dir string, commandname string, params string) (string, error)

err = cmd.wait()

return out.string(), err

}

用法三:在命令位置使用並實時輸出每行結果

func cmdandchangedirtoshow(dir string, commandname string, params string) error

cmd.stderr = os.stderr

cmd.dir = dir

err = cmd.start()

if err != nil

//建立乙個流來讀取管道內內容,這裡邏輯是通過一行一行的讀取的

reader := bufio.newreader(stdout)

//實時迴圈讀取輸出流中的一行內容

for

fmt.println(line)

}err = cmd.wait()

return err

}

用法四:在命令位置使用並實時寫入每行結果到檔案

func cmdandchangedirtofile(filename, dir, commandname string, params string) error

path += "logs/cmddir/"

ensuredir(path)

f, err := os.create(path + filename) //建立檔案

defer f.close()

cmd := exec.command(commandname, params...)

fmt.println("cmdandchangedirtofile", dir, cmd.args)

//stdoutpipe方法返回乙個在命令start後與命令標準輸出關聯的管道。wait方法獲知命令結束後會關閉這個管道,一般不需要顯式的關閉該管道。

stdout, err := cmd.stdoutpipe()

if err != nil

cmd.stderr = os.stderr

cmd.dir = dir

err = cmd.start()

if err != nil

//建立乙個流來讀取管道內內容,這裡邏輯是通過一行一行的讀取的

reader := bufio.newreader(stdout)

//實時迴圈讀取輸出流中的一行內容

for

_, err = f.writestring(line) //寫入檔案(位元組陣列)

f.sync()

}_, err = f.writestring("***************==處理完畢********************====") //寫入檔案(位元組陣列)

f.sync()

err = cmd.wait()

return err

}

DataGrid中四種取值方式(實用)

我們在datagrid的使用中經常會遇到取得datagrid的值的問題。有4種方式可能遇到的情況 1 繫結列 2 模板列中直接放靜態的字串 姓名 3 模板列中直接放繫結的字串 databinder.eval container.dataitem,vname 4 模板列中通過label放繫結的字串 v...

ios打包ipa的四種實用方法

xcode選單欄 product archive 三選一,一般選後兩個。2 itunes拖入 以前可以,這種方法十分方便。具體步驟請看動態圖 3 自動編譯指令碼 編寫乙個全自動編譯指令碼,從而不用開啟xcode編譯執行即可實現打包,這種方法也十分快捷。有興趣的可以看這篇文章。缺點 不出錯還好,一旦有...

MySQL 之 四種隔離級別

一 事務的基本要素 acid 1 原子性 atomicity 事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節。事務執行過程 錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是乙個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。2 一致性 con...