c - C程序-分段错误-popen:打开的文件太多-sh:0:管道调用失败
问题描述
我的 C 程序在运行 1 小时 30 后崩溃。我得到一个“分段错误”。我通过 gdb 进行调试,但有我的错误:
sh: 0: Pipe call failed
popen: Too many open files
我检查了我的代码,对于所有 popen 命令,我将 pclose,同上用于打开/关闭。但是,我仍然得到相同的行为。
我能做些什么?谢谢你的帮助。
问候,
解决方案
我检查了我的代码,对于所有 popen 命令,我将 pclose,同上用于打开/关闭。
这些远不是打开文件描述符的唯一调用。其他一些是dup
, pipe
,socket
等。
我能做些什么?
运行你的程序strace -e file ...
-- 如果open
s 不断返回越来越高的文件描述符,你肯定有文件描述符泄漏,查看strace
输出应该可以让你猜测它发生在哪里。
推荐阅读
- azure - Azure Functions VS 部署环境变量
- sql - 我有一个关系型和星型模式数据模型,我想查询以下结果
- xcode - 为什么我需要 Xcode 来安装一些软件包
- mysql - 如何成功导出 Magento 1.9 数据库(MySQL 5.6)并将其导入 MySQL 5.5
- ms-access - 使用文本框和组合框的 Dsum/Running Total - Ms Access
- mocking - jest - 模拟函数中的间谍函数
- flutter - Flutter-Firestore 集团
- php - 在 Woocommerce 中一次只允许购物车中的一个产品类别
- javascript - javascript导入函数内的另一个javascript
- excel - 打开从 Dynamics 365 下载的 Excel 文件时出现 Excel 错误 - 客户服务