openlang

在 Raspberry Pi 4 上打开文件

我在 Raspberry Pi 4 上用 for 循环里的 fopen 读取某个目录中的文件,总共有 1200 多个。循环执行到一定次数后,fopen 就无法再读取下一个文件了。应该怎么解决这个问题?

从英语翻译查看原文

后续讨论 2

顺着彼此的依据读下去
  1. 固定链接

    循环执行到一定次数后,fopen 就无法再读取下一个文件了。

    我猜可能是你用完文件后忘了调用 fclose,最终耗尽了内存或可用的文件描述符。

    应该怎么解决这个问题?

    记得对这些文件调用 fclose。

    从英语翻译查看原文
  2. 固定链接

    通过 fopen 打开文件时,系统会给这个文件分配一个文件描述符。这些描述符的数量是有限的。简单用 google 搜了一下,microsoft 通常似乎提供 640 个文件描述符。文件本身也会载入内存。因此,打开大量文件也可能很快耗尽内存。每个文件用完之后都应该关闭。只处理几个文件时,通常不会遇到这种问题。而像你这样需要处理数千个文件时,每个文件一用完就应该立刻关闭。

    从英语翻译查看原文

同一个问题的其他角度

  1. Go 会保留 SIGUSR1 和 SIGUSR2 吗?

    各位开发者, 我们想在 dmtcp 下运行一个 go 应用(GitHub 上的 dmtcp/dmtcp 是分布式多线程检查点项目 DMTCP(https://github.com/dmtcp/dmtcp))。这个检查点工具使用 SIGUSR2(也可以…

    回复 2最近活动 go
  2. 如何停止 inets 服务器?

    你好, 我有个关于 inets 的基础问题(顺便说一下,它不需要额外依赖,用着很方便),已经启动的 inets“服务”该怎么关闭(比如在 28.4 版本中)? 下面这些尝试都没成功。 上面的 httpd 条目是不是因为什么原因少了 {profile,…

    回复 2最近活动 erlang