首页 > 解决方案 > C程序-分段错误-popen:打开的文件太多-sh:0:管道调用失败

问题描述

我的 C 程序在运行 1 小时 30 后崩溃。我得到一个“分段错误”。我通过 gdb 进行调试,但有我的错误:

sh: 0: Pipe call failed
popen: Too many open files

我检查了我的代码,对于所有 popen 命令,我将 pclose,同上用于打开/关闭。但是,我仍然得到相同的行为。

我能做些什么?谢谢你的帮助。

问候,

标签: csegmentation-faultpopen

解决方案


我检查了我的代码,对于所有 popen 命令,我将 pclose,同上用于打开/关闭。

这些远不是打开文件描述符的唯一调用。其他一些是dup, pipe,socket等。

我能做些什么?

运行你的程序strace -e file ...-- 如果opens 不断返回越来越高的文件描述符,你肯定有文件描述符泄漏,查看strace输出应该可以让你猜测它发生在哪里。


推荐阅读