c - 为什么要在 c 中关闭管道?

标签 c pipe

如果管道的读取者忘记关闭 fd[1] 或者管道的编写者忘记关闭 fd[0] 会出现什么问题?

最佳答案

您将遇到文件句柄泄漏(只要打开文件描述符的进程正在运行)。可能发生的最糟糕的事情是,如果您有 很多 个管道,您会用完文件描述符句柄。

每个用户通常有一个软限制和一个硬限制(参见 ulimit),还有一个系统范围的限制(尽管如果您的系统有一个有用的每个用户限制,您不太可能达到那个限制).一旦用完文件描述符句柄,就会发生奇怪的事情,例如您将无法启动新进程或其他正在运行的进程可能会停止正常工作。

大多数时候这不是什么值得担心的事情,因为大多数时候只有两个进程和一个管道,所以泄漏不会是什么大问题。不过,您通常确实想要关闭任何不再需要的文件句柄以释放资源。

关于c - 为什么要在 c 中关闭管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061491/

相关文章:

c - 如何使用函数修改数组值?

c - 在 O(n) 时间内对输入的字母进行排序

bash - 如何使用 fd 而不是命名管道

linux - 我的 Perl 程序如何在 Linux 上获得标准输入?

iphone - 如何编辑 AUGraph 的默认工具?

c++ - 如何根据其中一个成员的值对结构数组进行排序,并在另一个成员的基础上打破联系?

ruby - RSpec 管道破裂

unix - 管道查找命令 "stderr"到命令

android-ndk - 使用 SOX 混合具有偏移(在特定点)的音频文件

c - 用C的指针数组?