go中无法读取utmpx文件

时间:2017-07-25 10:42:08

标签: c macos unix 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} nil

     

0 nil

没有错误,也没有数据。

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

如何获取此路径为another question

system:macOS el capiton,go go go.8.8 darwin / amd64

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用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