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
系统:macOS el capiton,go版本go1.8 darwin/amd64
**我的最终目标是将此文件读入 go struct。**此文件包含系统用户信息。
我能做到吗?我会继续努力...
最佳答案
为此,您可以使用 ioutil.ReadFile
函数:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
fd, err := ioutil.ReadFile("/var/run/utmpx")
fmt.Println(string(fd), err)
}
您原始代码中的问题是您读入了 0 字节长的 data
。由于读取器接口(interface)只读到 len(data)
,所以它什么也读不到。更多信息:https://golang.org/pkg/io/#Reader
关于无法读取 utmpx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45300938/