gpt4 book ai didi

转到 ioutil.ReadFile() 中的错误

转载 作者:IT王子 更新时间:2023-10-29 00:43:07 29 4
gpt4 key购买 nike

我在 Go 中运行一个程序,它在读取文件 /proc/stat 后连续发送数据。使用 ioutil.ReadFile("/proc/stat")运行大约 14 小时后,出现错误:too many files open/proc/stat点击here对于代码片段。

我怀疑 defer f.Close 有时会被 Go 忽略或者跳过它。


代码片段(以防 play.golang.org 比 stackoverflow.com 早死):

package main

import ("fmt";"io/ioutil")

func main() {
for {
fmt.Println("Hello, playground")
fData,err := ioutil.ReadFile("/proc/stat")
if err != nil {
fmt.Println("Err is ",err)
}
fmt.Println("FileData",string(fData))
}
}

最佳答案

原因可能是在你程序的某处:

  • 您忘记关闭文件,或者

  • 您依靠垃圾收集器在对象完成时自动关闭文件,但 Go 的保守垃圾收集器无法做到这一点。在这种情况下,您应该检查程序的内存消耗(程序运行时是否在稳定增加)。

无论哪种情况,请尝试检查/proc/PID/fd 的内容,以查看程序运行时打开的文件数是否在增加。

关于转到 ioutil.ReadFile() 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9171920/

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