一尘不染

Go中无法读取utmpx文件

go

package main

import (
 "os"
 "fmt"
)

func main() {
  fd, err := os.Open("/var/run/utmpx")
  fmt.Println(fd, err)
  var data []byte
  len, err := fd.Read(data)
  fmt.Println(len, err)
}

&{0xc42000a240}无

0无

没有错误,也没有数据。

/var/run/utmpx从系统头文件读取此路径。

系统:macOS el capiton,go版本go1.8 darwin / amd64

我的最终目标是将此文件读入结构体中。此文件包含系统用户信息。

我可以这样做吗? 我会继续尝试…


阅读 315

收藏
2020-07-02

共1个答案

一尘不染

您可以ioutil.ReadFile为此使用函数:

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    fd, err := ioutil.ReadFile("/var/run/utmpx")
    fmt.Println(string(fd), err)
}
原始代码中的问题是读到的data长度为0个字节。由于阅读器界面最多只能读取len(data),因此它不读取任何内容。有关更多信息:https
//golang.org/pkg/io/#Reader
2020-07-02