【问题标题】:Could fflush function increase file descriptors number in linux?fflush 函数可以增加 linux 中的文件描述符数量吗?
【发布时间】:2014-05-08 08:02:19
【问题描述】:

我的应用程序退出,因为它占用了太多文件描述符。所以我使用 gdb 来调试我的程序。当我使用 fflush 函数时,我发现文件描述符数量增加了。

例如:

//  before fflush  
// ll /proc/13593/fd/* | grep "send\.dat" | wc -l   
// 7 

     fflush(pFile);

//  after fflush  
// ll /proc/13593/fd/* | grep "send\.dat" | wc -l   
// 8

进程ID为13593。变量pFile指向文件send.dat。

谁能告诉我原因?非常感谢。

【问题讨论】:

  • 你需要发布一段完整的代码来演示你所看到的。

标签: c linux file-descriptor fflush


【解决方案1】:

fflush 不会创建新的文件描述符。

您可能一直在重新打开该文件但忘记关闭它。

【讨论】:

  • 是的,我写了一个简单的程序,发现 fflush 没有创建新的描述符。但是,看看我的评论。 fflush 文件指针后,确实增加了文件描述符数。
  • @ttworkhard: "我的应用程序使用了多线程" 所以很可能另一个线程只是在两次检查你打开的文件描述符的数量之间打开了另一个文件。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 2021-01-09
  • 2017-07-23
  • 1970-01-01
相关资源
最近更新 更多