go語言用來執行乙個系統的命令相對python來說還是有點複雜的,執行命令是乙個非常常見的需求,如呼叫乙個系統命令,啟乙個exe等,這裡分為幾種情況,之後統一總結一下。
以下以ping www.baidu.com 為例依次執行一下各種命令,主要使用標準庫中的os/exec
在執行命令的時候,我們主要使用的是os/exec包主的cmd結構體方法,cmd的結構體定義如下cmd結構體定義[1]
主要的引數有
path string// args保管命令的引數,包括命令名作為第乙個引數;如果為空切片或者nil,相當於無引數命令。 典型用法下,path和args都應被command函式設定。args string// env指定程序的環境,如為nil,則是在當前程序的環境下執行。stdin io.reader// stdout和stderr指定程序的標準輸出和標準錯誤輸出。 如果任乙個為nil,run方法會將對應的檔案描述符關聯到空裝置(os.devnull) 如果兩個字段相同,同一時間最多有乙個執行緒可以寫入。stdout io.writerstderr io.writer
但是我們一般不直接構造cmd結構體,而是通過exec.command() 函式返回乙個cmd結構體指標 如 exec.command("pin go語言執行shell命令
go語言執行shell命令 package main import os exec fmt os strings func main 預設輸出有乙個換行 fmt.println string whoami 指定引數後過濾換行符 fmt.println strings.trim string whoa...
go語言執行shell命令
go語言執行shell命令 package main import os exec fmt os strings func main 預設輸出有乙個換行 fmt.println string whoami 指定引數後過濾換行符 fmt.println strings.trim string whoa...
Go語言中的結構體
結構體中字段可以沒有名字,即匿名字段 struct中的每個字段,寫上乙個tag。這個tag可以通過反射的機制獲取到,最常用的場景就是json序列化和反序列化 package main import encoding json fmt type student struct func main 把這個...