猿问

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

我正在尝试执行 linux 命令并将输出转换为 int。这是我当前的代码:


package main


import (

    "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 中找不到可执行文件


我不明白此错误的含义以及如何修复它。


吃鸡游戏
浏览 99回答 1
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 检索这些限制
随时随地看视频慕课网APP

相关分类

Go
我要回答