为了账号安全,请及时绑定邮箱和手机立即绑定

执行外部命令并返回其输出

执行外部命令并返回其输出

Go
吃鸡游戏 2023-04-24 15:52:59
我正在尝试执行 linux 命令并将输出转换为 int。这是我当前的代码: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!!!")    }}这是我当前的错误:2018/10/12 14:37:27 执行:“ulimit -n”:在 $PATH 中找不到可执行文件我不明白此错误的含义以及如何修复它。
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

linux 中没有ulimit可以运行的程序。

ulimit 是 shell 的内置函数。因此,您需要运行一个 shell 并让 shell 运行其内部的 ulimit 命令。

cmd := exec.Command("/bin/sh", "-c" "ulimit -n")

您还必须从 ulimit 命令的输出中删除换行符,例如

count, err := strconv.Atoi( strings.Trim(string(cmdOutput.Bytes()),"\n"))

更好的选择是通过 go 中的系统调用 API 检索这些限制


查看完整回答
反对 回复 2023-04-24
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信