gpt4 book ai didi

go - Golang 中打开文件错误太多

转载 作者:IT王子 更新时间:2023-10-29 01:24:27 26 4
gpt4 key购买 nike

我只是在阅读 /proc/diskstats 文件。我的代码是:

func ReadFromFile(filepath string)(string){
defer func() {
if err1 := recover(); err1 != nil {
fmt.Println("!!!!!!!!!!!!!!!!Panic Occured and Recovered in readFromFile(), Error Info: ", err1)
}
}()

strData := ""

data, err := ioutil.ReadFile(filepath)
if err != nil{
fmt.Println("File read error: ", err)
return ""
}

strData = string(data)
return strData
}

我得到的错误是:

File read error: open /proc/diskstats: too many open files

不仅对于这个文件,对于其他一些文件我也会遇到同样的错误。

我也运行过这个命令:

root@golang:~# lsof|wc -l

785

请指导我。

最佳答案

我遇到了同样的问题(可能是不同的环境或设置)并以不同的方式解决了它:

func some_func(file_name []string) {
for _, file_name := range file_names {
f, _ := os.Create(file_name)
// defer f.Close() // bad idea
_, _ = f.Write([]byte("some text"))
f.Close() // better idea
}
}

问题是 defer 将在函数返回时执行,这可能需要一段时间 - 取决于循环大小(坏主意)。因此,只需明确说明即可(更好的主意)。

关于go - Golang 中打开文件错误太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37804804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com