无法读取utmpx文件 [英] Can not read utmpx file in go
问题描述
包主
$ b导入(
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>无n
blockquote>
没有错误,也没有数据。
这条路径
/ var / run /从系统头文件中读取utmpx
。
如何获得此路径另一个问题
系统:macOS el capiton,go版本go1.8达尔文/ amd64
**我的最终目标是阅读文件中包含系统用户信息。
我可以这样做吗?我会继续尝试......
您可以使用ioutil.ReadFile
函数来完成此操作: >
package main
import(
fmt
io / ioutil
$ b $ func main(){
fd,err:= ioutil.ReadFile(/ var / run / utmpx)
fmt.Println(string(fd ),错误)
}
原始代码中的问题是, code> data ,长度为0字节。由于阅读器接口只读取
len(data)
的读数,因此它什么都不读。更多内容: https://golang.org/pkg/io/#Readerpackage 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
There is no error, also no data.
This path
/var/run/utmpx
is read from system header file.How to get this path is another question
system: macOS el capiton, go version go1.8 darwin/amd64
**My final goal is to read this file into go struct.**This file contains system users infomation.
Can I do that ? I will keep trying...
解决方案You can use the
ioutil.ReadFile
function for this:package main import ( "fmt" "io/ioutil" ) func main() { fd, err := ioutil.ReadFile("/var/run/utmpx") fmt.Println(string(fd), err) }
The problem in your original code is that you read into
data
that is 0 bytes long. Since the reader interface reads only reads up tolen(data)
, it reads nothing. More on that: https://golang.org/pkg/io/#Reader这篇关于无法读取utmpx文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!