【发布时间】:2013-07-31 22:40:08
【问题描述】:
我正在开发 Ubuntu。当我大约在 1 小时后运行我的程序时,我收到了这个错误:
GLib-ERROR **: Cannot create pipe main loop wake-up: Too many open files 程序意外结束。
当我使用 gdb 运行时,它不会崩溃。
我不明白为什么?这个错误的原因是什么?
非常感谢..
【问题讨论】:
我正在开发 Ubuntu。当我大约在 1 小时后运行我的程序时,我收到了这个错误:
GLib-ERROR **: Cannot create pipe main loop wake-up: Too many open files 程序意外结束。
当我使用 gdb 运行时,它不会崩溃。
我不明白为什么?这个错误的原因是什么?
非常感谢..
【问题讨论】:
打开的文件太多
很明显。可能你的文件描述符有泄漏,所以你应该检查你的代码是否打开了很多文件/文件描述符但没有正确关闭它们。如果你 fork 一个进程,你还应该考虑在开始实际进程之前关闭它们,因为这也可能是一个常见的错误。
操作系统有一个有限的表,它可以维护多少个文件描述符,显然你超出了这个限制。
【讨论】:
lsof。可能会给你一个很长的清单。您可以通过以下方式过滤:lsof -i 用于套接字连接,lsof -f 用于真实文件流,...