我正在嘗試執(zhí)行 linux 命令并將輸出轉(zhuǎn)換為 int。這是我當(dāng)前的代碼:package mainimport ( "os/exec" "os" "strconv" _"fmt" "log" "bytes")func main(){ cmd := exec.Command("ulimit", "-n") cmdOutput := &bytes.Buffer{} cmd.Stdout = cmdOutput err := cmd.Run() if err != nil { os.Stderr.WriteString(err.Error()) } count, err := strconv.Atoi( string(cmdOutput.Bytes()) ) if err != nil { log.Fatal(err) } if count <= 1024 { log.Fatal("This machine is not good for working!!!") }}這是我當(dāng)前的錯誤:2018/10/12 14:37:27 執(zhí)行:“ulimit -n”:在 $PATH 中找不到可執(zhí)行文件我不明白此錯誤的含義以及如何修復(fù)它。
1 回答

小怪獸愛吃肉
TA貢獻(xiàn)1852條經(jīng)驗 獲得超1個贊
linux 中沒有ulimit
可以運行的程序。
ulimit 是 shell 的內(nèi)置函數(shù)。因此,您需要運行一個 shell 并讓 shell 運行其內(nèi)部的 ulimit 命令。
cmd?:=?exec.Command("/bin/sh",?"-c"?"ulimit?-n")
您還必須從 ulimit 命令的輸出中刪除換行符,例如
count,?err?:=?strconv.Atoi(?strings.Trim(string(cmdOutput.Bytes()),"\n"))
更好的選擇是通過 go 中的系統(tǒng)調(diào)用 API 檢索這些限制
- 1 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消